-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Lock] Split "StoreInterface" into multiple interfaces with less responsability #32198
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
[Lock] Split "StoreInterface" into multiple interfaces with less responsability #32198
Conversation
82d8e0e
to
5f1ad1f
Compare
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
Outdated
Show resolved
Hide resolved
d9ffc80
to
f00128e
Compare
Status: Needs Review |
0cbc182
to
444acce
Compare
444acce
to
e893032
Compare
Status: Needs Review |
e893032
to
c43a990
Compare
fabbot has some interesting fixes :) |
8f5d0bd
to
e6e9977
Compare
cc @fabpot fixed. |
@@ -70,6 +71,9 @@ public function acquire($blocking = false) | |||
{ | |||
try { | |||
if ($blocking) { | |||
if (!($this->store instanceof StoreInterface) && !($this->store instanceof BlockingStoreInterface && $this->store->supportsWaitAndSave())) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!($this->store instanceof StoreInterface)
-> !$this->store instanceof StoreInterface
e6e9977
to
91fcbea
Compare
Thank you @Simperfit. |
… with less responsability (Simperfit) This PR was squashed before being merged into the 4.4 branch (closes #32198). Discussion ---------- [Lock] Split "StoreInterface" into multiple interfaces with less responsability | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | no | New feature? | yes <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | Contribute to #28694 <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | TODO <!-- required for new features --> <!-- Replace this notice by a short README for your feature/bugfix. This will help people understand your PR and can be used as a start for the documentation. Additionally (see https://symfony.com/roadmap): - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too). - Features and deprecations must be submitted against branch 4.4. - Legacy code removals go to the master branch. --> We are removing the StoreInterface in order to split into multiple interface, it will help reduce de responsability of the StoreInterface. Firstly, since not all stores needs to have all the methods of the StoreInterface, we can split this like this in order to limit the methods that are needed for each store. Secondly, we add supportsX methods in order to avoid throwing exception when a store does not supports a feature it's easier an instance of the special interface or not, and it can return true/false on the support method. **Really big thanks to** @jderusse for working with me on this, 1-2 hours of talking together, and another 1-2 hours of pre-review :). now giving it to the whole community ! *some time has been sponsored by* @izisolutions Commits ------- 91fcbea [Lock] Split \"StoreInterface\" into multiple interfaces with less responsability
…Simperfit) This PR was merged into the 4.4 branch. Discussion ---------- [Lock] rename and deprecate Factory into LockFactory | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes<!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | none <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR <!-- required for new features --> <!-- Replace this notice by a short README for your feature/bugfix. This will help people understand your PR and can be used as a start for the documentation. Additionally (see https://symfony.com/roadmap): - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too). - Features and deprecations must be submitted against branch 4.4. - Legacy code removals go to the master branch. --> As highlighted in #32198 (review) we need to rename the factory to LockFactory for consistency and readability. Commits ------- fc75eb9 [Lock] rename and deprecate Factory into LockFactory
…Simperfit) This PR was merged into the 4.4 branch. Discussion ---------- [Lock] rename and deprecate Factory into LockFactory | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes<!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | none <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR <!-- required for new features --> <!-- Replace this notice by a short README for your feature/bugfix. This will help people understand your PR and can be used as a start for the documentation. Additionally (see https://symfony.com/roadmap): - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too). - Features and deprecations must be submitted against branch 4.4. - Legacy code removals go to the master branch. --> As highlighted in symfony/symfony#32198 (review) we need to rename the factory to LockFactory for consistency and readability. Commits ------- fc75eb9bef [Lock] rename and deprecate Factory into LockFactory
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't like the PersistStoreInterface
name also, should be PersistingStoreInterface
to be consistent with BlockingStoreInterface
.
@@ -92,8 +93,12 @@ public function save(Key $key) | |||
throw new LockConflictedException(); | |||
} | |||
|
|||
/** | |||
* {@inheritdoc} | |||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing @deprecated
public function waitAndSave(Key $key) | ||
{ | ||
@trigger_error(sprintf('%s::%s has been deprecated since Symfony 4.4 and will be removed in Symfony 5.0.', \get_class($this), __METHOD__), E_USER_DEPRECATED); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
broken notice, __METHOD__
gives FQCN::method
. Parentheses are missing also, and we usually don't add the and will be removed ...
part.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you mean the paretheses in %s() ?
@@ -69,8 +70,12 @@ public function save(Key $key) | |||
$this->checkNotExpired($key); | |||
} | |||
|
|||
/** | |||
* {@inheritdoc} | |||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
public function waitAndSave(Key $key) | ||
{ | ||
@trigger_error(sprintf('%s has been deprecated since Symfony 4.4 and will be removed in Symfony 5.0.', __METHOD__)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing parentheses
@@ -145,6 +146,7 @@ public function save(Key $key) | |||
*/ | |||
public function waitAndSave(Key $key) | |||
{ | |||
@trigger_error(sprintf('%s has been deprecated since Symfony 4.4 and will be removed in Symfony 5.0.', __METHOD__)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
…ew (Simperfit) This PR was squashed before being merged into the 4.4 branch (closes #32492). Discussion ---------- [Lock] feature: lock split interface fix post-merge review | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | no | New feature? | yesish <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | none <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | none <!-- required for new features --> <!-- Replace this notice by a short README for your feature/bugfix. This will help people understand your PR and can be used as a start for the documentation. Additionally (see https://symfony.com/roadmap): - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too). - Features and deprecations must be submitted against branch 4.4. - Legacy code removals go to the master branch. --> see #32198 (review) Commits ------- 8173c47 [Lock] feature: lock split interface fix post-merge review
…ew (Simperfit) This PR was squashed before being merged into the 4.4 branch (closes #32492). Discussion ---------- [Lock] feature: lock split interface fix post-merge review | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | no | New feature? | yesish <!-- please update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | none <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | none <!-- required for new features --> <!-- Replace this notice by a short README for your feature/bugfix. This will help people understand your PR and can be used as a start for the documentation. Additionally (see https://symfony.com/roadmap): - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too). - Features and deprecations must be submitted against branch 4.4. - Legacy code removals go to the master branch. --> see symfony/symfony#32198 (review) Commits ------- 8173c475f3 [Lock] feature: lock split interface fix post-merge review
We are removing the StoreInterface in order to split into multiple interface, it will help reduce de responsability of the StoreInterface.
Firstly, since not all stores needs to have all the methods of the StoreInterface, we can split this like this in order to limit the methods that are needed for each store.
Secondly, we add supportsX methods in order to avoid throwing exception when a store does not supports a feature it's easier an instance of the special interface or not, and it can return true/false on the support method.
Really big thanks to @jderusse for working with me on this, 1-2 hours of talking together, and another 1-2 hours of pre-review :). now giving it to the whole community !
some time has been sponsored by @izisolutions