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.
Description:
This PR fixes a number of deadlock issues around rotations by introducing some rather aggressive locks.
This is necessary until we can remove the dependency on triggers that cause different locking orders resulting in deadlocks depending on what changes happen when.
Any changes to rotation participants or state (including deleting a user) now acquire locks on both
rotation_participants
androtation_state
first, in the same order, before being allowed to continue.Additionally, a bug was fixed that prevented deleting a user if they were the last member of a rotation and currently active.