You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
P1 — High — bound avoidable cache-layer amplification before broad production adoption.
Current problem
A failed Redis read already pays the caller-owned client's timeout/queue/retry cost and logs once. DialCache then runs the source fallback. For untracked keys it currently attempts a Redis write afterward, potentially paying and logging a second failed Redis operation on the same request. Tracked keys already suppress that post-read-error write to preserve invalidation safety.
The earlier lazy-factory retry concern was removed by #67. Redis clients are now created, connected, configured, and lifecycle-owned by the application.
The underlying Redis/Valkey client should own command timeouts, reconnect policy, retry strategy, and offline queueing. The injected logger should own deployment-specific sampling/rate limiting. DialCache should not duplicate those systems with a second general-purpose client breaker unless production evidence shows the client boundary is insufficient.
Recommended minimal scope — approval required
After any Redis read exception, run fallback but skip the post-fallback Redis write for both tracked and untracked keys. A later request retries Redis normally, so recovery requires no DialCache breaker state.
Preserve local population only where it does not weaken tracked invalidation correctness.
Priority
P1 — High — bound avoidable cache-layer amplification before broad production adoption.
Current problem
A failed Redis read already pays the caller-owned client's timeout/queue/retry cost and logs once. DialCache then runs the source fallback. For untracked keys it currently attempts a Redis write afterward, potentially paying and logging a second failed Redis operation on the same request. Tracked keys already suppress that post-read-error write to preserve invalidation safety.
The earlier lazy-factory retry concern was removed by #67. Redis clients are now created, connected, configured, and lifecycle-owned by the application.
Current evidence:
Ownership boundary
The underlying Redis/Valkey client should own command timeouts, reconnect policy, retry strategy, and offline queueing. The injected logger should own deployment-specific sampling/rate limiting. DialCache should not duplicate those systems with a second general-purpose client breaker unless production evidence shows the client boundary is insufficient.
Recommended minimal scope — approval required
invalidateRemote()failures.Deferred unless measured evidence requires it
Acceptance criteria