Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 31, 2018

Conversation

nicolas-grekas
Copy link
Member

@nicolas-grekas nicolas-grekas commented Oct 30, 2018

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.

@nicolas-grekas nicolas-grekas added this to the 4.2 milestone Oct 30, 2018
@nicolas-grekas nicolas-grekas force-pushed the cache-do-save branch 3 times, most recently from c7b3b32 to ead471c Compare October 31, 2018 07:57
@nicolas-grekas nicolas-grekas merged commit 321d7f4 into symfony:master Oct 31, 2018
nicolas-grekas added a commit that referenced this pull request Oct 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()
@nicolas-grekas nicolas-grekas deleted the cache-do-save branch October 31, 2018 08:49
This was referenced Nov 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants