[6.0.2] Add the ability to break self-ref cycles between added and removed entities #26963
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.
Fixes #26750
Description
Due to a bug fix we now sort Deletes before Inserts for the same table to avoid deadlocks. However in some cases this ordering can create a dependency cycle in the operations.
This fix is the same as in #26959, but applied to a different method.
Customer impact
An exception is thrown when adding and removing related self-referencing entities in the same transaction. A workaround would be to remove the entities first then add them in a separate transaction.
How found
Customer report on 6.0.0.
Regression
Yes, from 5.0. Regressed by #25952
Testing
This PR adds coverage for this scenario.
Risk
Low; the fix only affects update command ordering. Quirk mode added.