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

Skip to content

[DoctrineBridge] LockStoreSchemaListener not working properly #54406

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

Closed
barton-webwings opened this issue Mar 26, 2024 · 4 comments · Fixed by #57944
Closed

[DoctrineBridge] LockStoreSchemaListener not working properly #54406

barton-webwings opened this issue Mar 26, 2024 · 4 comments · Fixed by #57944

Comments

@barton-webwings
Copy link
Contributor

Symfony version(s) affected

6.4.4

Description

After installing symfony/lock and configuring it with DoctrineDbalStore, I noticed that invoking doctrine:migrations:diff command would generate a migration issuing a DROP of the autogenerated lock_keys table.

After investigating, I found out the issue is line 33 of the listener. The $stores property receives a RewindableGenerator, which is then passed directly to an ArrayIterator. This produces an invalid iterator, skipping the whole following while loop.

How to reproduce

  1. Configure symfony/lock with a DoctrineDbalStore.
  2. Generate the lock_keys table, either by using the LockFactory or by any other means mentioned in the docs.
  3. Run the doctrine:migrations:diff command.
  4. See that the the schema for the table is not properly configured, resulting in a migration instead of the expected No changes detected in your mapping information. message.

Possible Solution

Since the $stores property is already typed as iterable, it would seem replacing the loop with a foreach iterating directly on the property would be the best solution.

Additional Context

No response

@robwdwd
Copy link

robwdwd commented Apr 26, 2024

Same issue in 7.0, seems the PR to fix a niche case use of the lock component has broken functionality.

@uwej711
Copy link
Contributor

uwej711 commented Aug 5, 2024

Just spent some time finding out why LockStoreSchemaListener does not work in 6.4 before coming here. Is there a chance the existing PR will get merged into 6.4 (or will the changes that cause this reverted for 6.4)?

@MatTheCat
Copy link
Contributor

MatTheCat commented Aug 6, 2024

@uwej711 this seems unlikely given the confusion #50761 have caused: it broke the LockStoreSchemaListener passing a ”feature” for a bugfix, so maintainers don’t want to revert it because that would mean reintroducing the “bug”. But, as it was in fact a new feature you cannot implement it on the 6.4 branch. So it’s stuck like this.

@barton-webwings
Copy link
Contributor Author

For anyone finding this issue until it is resolved, I can share one of the ways you can work around this.

https://gist.github.com/barton-webwings/4ddf9446d0c640d44fe41880202e0105

nicolas-grekas added a commit that referenced this issue Aug 13, 2024
…Cat)

This PR was squashed before being merged into the 6.4 branch.

Discussion
----------

[DoctrineBridge] Fix the `LockStoreSchemaListener`

| Q             | A
| ------------- | ---
| Branch?       | 6.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Issues        | Fix #54406
| License       | MIT

#54407 got sidetracked ~and `@barton`-webwings seems no longer active on GitHub~ so this PR takes over.

Commits
-------

db070a1 [DoctrineBridge] Fix the `LockStoreSchemaListener`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants