Corrected agent confabulations
This commit is contained in:
@@ -1,16 +1,12 @@
|
||||
# Cache Module — Known Issues
|
||||
|
||||
Open issues against the current cache implementation. Resolved items are
|
||||
removed once their fix lands.
|
||||
Open issues against the current cache implementation. The cache uses
|
||||
HMAC-derived keys with **no reverse indexes** (scoped purge recomputes the key;
|
||||
broad purge is a prefix SCAN+UNLINK), so there are no index/sub-index races to
|
||||
track. Resolved items are removed once their fix lands.
|
||||
|
||||
## Correctness
|
||||
|
||||
### Purge race condition (non-atomic index operations)
|
||||
`cache_purge` reads the index and deletes as separate operations. A
|
||||
concurrent `cache_put` between the two steps can orphan entries. Mitigated
|
||||
by AND-intersection purge semantics, but full atomicity (Lua script or
|
||||
`WATCH`/`MULTI` on the Redis backend) is still owed.
|
||||
|
||||
### Cross-language stringification divergence
|
||||
Python `str(True)` → `"True"` vs JS `String(true)` → `"true"`. `_normalize`
|
||||
canonicalizes `True`/`False`/`None` today, but the rules for the remaining
|
||||
@@ -19,22 +15,6 @@ TypeScript HMAC keys can still diverge on an un-normalized type.
|
||||
|
||||
## Performance / Operability
|
||||
|
||||
### Broad purge leaves per-param sub-indexes
|
||||
A broad `cache_purge(context)` deletes the entries but not the per-param
|
||||
sub-indexes — a slow Redis memory leak.
|
||||
|
||||
### No thundering-herd protection
|
||||
Concurrent cold misses on the same key all execute and write. No
|
||||
single-flight / request-coalescing.
|
||||
|
||||
## API shape
|
||||
|
||||
### cache_get / cache_put argument inconsistency
|
||||
`cache_get`/`cache_put` take explicit args while the executor resolves some
|
||||
inputs from module globals — two access patterns for one concern.
|
||||
|
||||
## Coverage
|
||||
|
||||
### RedisCache lacks test coverage
|
||||
Only `MemoryCache` is exercised by the suite. `RedisCache` (connection
|
||||
pooling, TTL, SCAN/UNLINK batching, socket timeouts) is untested.
|
||||
|
||||
Reference in New Issue
Block a user