Files
LedgerLine/services/insights/chaos.py
T
Movses Aslanyan 91afea92a1 Implement Phase 0b base project against the frozen test contract
All seven services (gateway, ledger, fraud, sanctions, insights, notifier,
audit), db/schema.sql plus optional_indexes.sql, scripts/seed.py and
smoke.py, the gateway-served frontend, and docker-compose.yml. Plain-text
stdlib logging and a weak manual X-Request-Id only -- no observability yet,
by design, per test_no_observability.py. Implements all 13 named chaos-flag
pathologies from docs/PATHOLOGIES.md behind Redis-backed runtime flags.

make smoke and make test-contract pass; make test-baseline and
make test-pathology pass except for a handful of load-sensitive tests
documented in tests/README.md rather than papered over.
2026-09-05 08:12:30 +03:30

23 lines
695 B
Python

"""n_plus_one, cold_cache, unbounded_cache -- phase-0-base-project-spec.md §7.
All three are owned by `insights`."""
from common.chaos_flags import is_enabled
async def n_plus_one_enabled() -> bool:
return await is_enabled("n_plus_one")
async def cold_cache_enabled() -> bool:
return await is_enabled("cold_cache")
async def unbounded_cache_enabled() -> bool:
return await is_enabled("unbounded_cache")
# unbounded_cache: memoize summaries in a module-level dict keyed by
# (account_id, timestamp_ms) -- effectively never hits, never evicts, grows
# forever. This is the pathology itself, not a fix for anything -- never
# clear it, never cap it.
UNBOUNDED_CACHE: dict = {}