Wrap Cache::Default in AutoWire fault-tolerance proxies#79
Merged
Conversation
Previously, passing `cache: nil` (or relying on the default) returned `Cache::Default.new` unwrapped. Because `Default` can resolve to a non-fault-tolerant `Rails.cache`, this bypassed the `CircuitProxy` and `FaultTolerantProxy` wrappers that the rest of `Cache::AutoWire` guarantees, leaving the auto-wired cache potentially non-fault-tolerant. Recurse through `wrap` with the constructed `Default` so it is treated like any other supplied backend: fault-tolerant resolutions (Null, ActiveSupport MemoryStore) pass through unchanged, while a non-fault-tolerant `Rails.cache` now gets the standard proxy stack. Add specs covering both `Default` resolutions to pin the behavior.
c0f19d4 to
ed4ec37
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.
Previously, passing
cache: nil(or relying on the default) returnedCache::Default.newunwrapped. BecauseDefaultcan resolve to a non-fault-tolerantRails.cache, this bypassed theCircuitProxyandFaultTolerantProxywrappers that the rest ofCache::AutoWireguarantees, leaving the auto-wired cache potentially non-fault-tolerant.Recurse through
wrapwith the constructedDefaultso it is treated like any other supplied backend: fault-tolerant resolutions (Null, ActiveSupport MemoryStore) pass through unchanged, while a non-fault-tolerantRails.cachenow gets the standard proxy stack.Add specs covering both
Defaultresolutions to pin the behavior.