fix: L1-only mode (backend=None) should not attempt Redis connection#6
Merged
fix: L1-only mode (backend=None) should not attempt Redis connection#6
Conversation
When using @cache(backend=None) for L1-only caching, the decorator was still attempting to connect to Redis on every operation. Root cause: Sentinel problem - couldn't distinguish explicit backend=None from unspecified backend. Changes: - Track explicit backend=None intent via _l1_only_mode flag - Skip backend provider lookup in L1-only mode - Fix invalidate_cache() to honor L1-only mode - Add DEBUG log when L1-only mode ignores available Redis - Clean up ttl or ttl copy-paste cruft Closes #3
… level Remove buggy check that treated DecoratorConfig.backend defaulting to None as L1-only mode. Now only @cache(backend=None) triggers L1-only. For L1-only with presets, use: @cache(backend=None, config=...)
Adds TestDefaultBackendBehavior class with 6 tests verifying that: - @cache() without backend=None DOES call get_backend_provider() - @cache.minimal/dev/test() presets behave correctly - DecoratorConfig default (backend=None) != explicit backend=None - Explicit backend instances bypass provider lookup These regression tests protect against the bug where checking `config.backend is None` would treat ALL decorators as L1-only (since DecoratorConfig.backend defaults to None).
47f3b46 to
872fe23
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #3
When using
@cache(backend=None)for L1-only caching, the decorator was still attempting to connect to Redis on every operation.Root Cause
Sentinel problem - couldn't distinguish explicit
backend=Nonefrom unspecified backend.Changes
backend=Noneintent via_l1_only_modeflag inintent.pywrapper.pyinvalidate_cache()andainvalidate_cache()to honor L1-only modettl or ttlcopy-paste cruft (8 instances)Test Plan
tests/unit/test_l1_only_mode.py(10 tests)invalidate_cache()in L1-only modeFiles Changed
src/cachekit/decorators/intent.py- Track explicit L1-only intentsrc/cachekit/decorators/wrapper.py- Honor L1-only flag, add DEBUG logtests/unit/test_l1_only_mode.py- New comprehensive test suite