OpenMetadata/docker/development
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
..
distributed-test Add Json Logging (#26357) 2026-03-31 16:15:07 -07:00
helm Fix k8s operator exit handler pod loop and TTL cleanup, add tolerations (#26971) 2026-04-14 09:42:54 +02:00
mock-oidc-provider MSAL Token Renewal Fix — Safari Session Loss (#27214) 2026-04-09 17:45:00 -07:00
.env.sso-test MSAL Token Renewal Fix — Safari Session Loss (#27214) 2026-04-09 17:45:00 -07:00
docker-compose-fuseki.yml RDF, cleanup relations and remove unnecessary bindings, add distributed mode for RDF reindex (#26902) 2026-04-14 13:24:41 -07:00
docker-compose-gcp.yml [Search] Upgrade Clients (#25719) 2026-02-07 18:54:13 +05:30
docker-compose-postgres-fuseki.yml [Search] Upgrade Clients (#25719) 2026-02-07 18:54:13 +05:30
docker-compose-postgres.yml [Search] Upgrade Clients (#25719) 2026-02-07 18:54:13 +05:30
docker-compose.cache-off.yml cache: lineage cache, per-type metrics, invalidation registry, search-cache 2026-05-09 21:44:47 -07:00
docker-compose.multiserver.yml Perf/redis cache metrics and indexes (#27499) 2026-04-23 12:18:53 +02:00
docker-compose.redis.yml Perf/redis cache metrics and indexes (#27499) 2026-04-23 12:18:53 +02:00
docker-compose.yml MSAL Token Renewal Fix — Safari Session Loss (#27214) 2026-04-09 17:45:00 -07:00
Dockerfile Fix #21506: Upgrade to Java 21 (#21507) 2025-06-11 22:06:08 -07:00