OpenMetadata/docker
Sriharsha Chintalapani c20a29b11b cache: lineage cache, per-type metrics, invalidation registry, search-cache
Add Redis-backed lineage response cache and search response cache, both
gated by the existing CACHE_PROVIDER toggle and falling through to direct
computation when the cache is unavailable. The cache remains optional —
verified end-to-end by toggling CACHE_PROVIDER=none on a live stack and
confirming all paths continue to work (just without the L2 hit).

Coverage:
- CachedLineage wraps LineageRepository.getLineage with hybrid TTL +
  direct invalidation (60s default). Direct edits invalidate the affected
  root cache entries; transitive changes fall through to TTL.
- CachedSearchLayer wraps /api/v1/search/query with auth-aware caching
  (cache key includes principal so users with different ACLs don't share
  results). 30s default TTL.

Observability:
- /api/v1/system/cache/stats response now includes a metrics block with
  hits/misses/hitRatio/evictions/errors/writes plus read/write latency
  Timers, and a byType breakdown so coverage gaps are visible per
  entity-type and per cache-layer.

Correctness:
- New Invalidatable interface + CacheBundle registry + invalidateEntity
  helper so future cache layers plug in by implementing one method
  instead of editing multiple mutation paths.
- Edge mutations in LineageRepository.addLineage/deleteLineage invalidate
  both endpoints; entity mutations in EntityRepository.postUpdate /
  postDelete / restoreEntity invalidate the lineage rooted at the entity.
- Pub/sub handler in CacheBundle iterates registered Invalidatables so
  remote-pod evictions flow to all layers automatically.

Tooling:
- docker-compose.cache-off.yml overlay flips CACHE_PROVIDER=none for
  local A/B testing without tearing down DB/ES volumes.
- CachedSearchLayerIT exercises hit-on-second-call, distinct-query
  misses, distinct-page-size misses, and byType shape via the metrics
  endpoint. Each test gracefully no-ops when the cluster runs cache-off.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 21:44:47 -07:00
..
development cache: lineage cache, per-type metrics, invalidation registry, search-cache 2026-05-09 21:44:47 -07:00
docker-compose-ingestion preparing 1.12 branch (#24870) 2025-12-17 18:36:03 +05:30
docker-compose-openmetadata fix: memory hardening to prevent OOMKill under concurrent load (#27397) 2026-04-17 14:51:16 +02:00
docker-compose-quickstart [Search] Upgrade Clients (#25719) 2026-02-07 18:54:13 +05:30
images/minimal-ubuntu Fix java 21 in docker (#21746) 2025-06-12 18:24:25 -07:00
local-sso/keycloak-saml test(playwright): add nightly SSO login spec starting (#27164) 2026-04-17 13:09:54 +05:30
mysql Pluggable API/Features Limits (#16782) 2024-07-01 14:59:25 +05:30
postgresql Fix #8208: OpenMetadata server supports Postgres 15 (#12370) 2023-08-02 11:13:28 +05:30
rdf-store fix #21555: Automator - Separating terms and tags in action config (#22970) 2025-08-28 10:50:48 +02:00
openmetadata-start.sh MINOR - Pydantic V2 warnings and better exception msg (#16916) 2024-07-04 14:54:41 +02:00
openmetadata.yaml Updating docker env and symbolic link for openmetadata.yaml (#12684) 2023-08-01 11:07:29 +05:30
run_local_docker.sh RDF, cleanup relations and remove unnecessary bindings, add distributed mode for RDF reindex (#26902) 2026-04-14 13:24:41 -07:00
run_local_docker_common.sh RDF, cleanup relations and remove unnecessary bindings, add distributed mode for RDF reindex (#26902) 2026-04-14 13:24:41 -07:00
run_local_docker_rdf.sh RDF, cleanup relations and remove unnecessary bindings, add distributed mode for RDF reindex (#26902) 2026-04-14 13:24:41 -07:00
validate_compose.py RDF, cleanup relations and remove unnecessary bindings, add distributed mode for RDF reindex (#26902) 2026-04-14 13:24:41 -07:00