Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[Cache] allow to skip saving the computed value when using CacheInterface::get()#29022
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Conversation
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
c7b3b32 toead471cCompareead471c to321d7f4Comparenicolas-grekas added a commit that referenced this pull requestOct 31, 2018
…sing CacheInterface::get() (nicolas-grekas)This PR was merged into the 4.2-dev branch.Discussion----------[Cache] allow to skip saving the computed value when using CacheInterface::get()| Q | A| ------------- | ---| Branch? | 4.2| Bug fix? | yes| New feature? | yes| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets | -| License | MIT| Doc PR | -While trying to play with using Messenger and Cache together, I spotted a few issues related to the new `CacheInterface::get()` method:- there must be a way to skip saving the computed value in the pool. This is needed in my (still local WIP) use case - and is also needed for `LockRegistry`: processes that wait for the lock to be released should not write the value back when the lock is over. This is addressed by adding a 2nd `bool &$save` argument to the computing callback. When the callback sets this reference to true, the returned value should not be written to the pool.- in order to better document the signature of this callback, a new `CallbackInterface` is added in the `Contracts\Cache` namespace. This will help autocompletion and implementations.- `ContractsTrait` was writing twice the value to the pool - now fixed- `LockRegistry` did not retry locking when a waiting process wasn't able to fetch the fresh value - now fixed.Commits-------321d7f4 [Cache] allow to skip saving the computed value when using CacheInterface::get()
Sign up for freeto 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.
Uh oh!
There was an error while loading.Please reload this page.
While trying to play with using Messenger and Cache together, I spotted a few issues related to the new
CacheInterface::get()method:LockRegistry: processes that wait for the lock to be released should not write the value back when the lock is over. This is addressed by adding a 2ndbool &$saveargument to the computing callback. When the callback sets this reference to true, the returned value should not be written to the pool.CallbackInterfaceis added in theContracts\Cachenamespace. This will help autocompletion and implementations.ContractsTraitwas writing twice the value to the pool - now fixedLockRegistrydid not retry locking when a waiting process wasn't able to fetch the fresh value - now fixed.