When we loop through all split sessions, it is possible that some splitOpCtx may successfully acquire the RSTL while others are blocked behind stepDown (e.g. when stepDown happens in the middle of this loop). SERVER-79950 added UninterruptibleLockGuard to all splitOpCtx and so _commitSplitPreparedTxnOnPrimary is not interruptible by stepDown. In the case mentioned above, if some but not all of the splitOpCtx in _commitSplitPreparedTxnOnPrimary already hold RSTL in IX mode, it will block stepDown while not being able to make progress. Thus, we have a deadlock.
- related to
-
SERVER-79950 Fix commitPreparedTransaction to not be interruptible in commitSplitTxn and reacquireTicket
- Closed
-
SERVER-90803 Remove the use of UninterruptibleLockGuard in transaction participant
- Open