-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 4.1.4
-
Component/s: Replication
-
None
-
Fully Compatible
-
Sharding 2018-11-05
The ReplicationStateTransitionLockGuard RAII class was introduced as a means for replication stepdown to be able to temporarily release the locks for prepared transactions so that the Global X lock can be acquired. However, closer inspection by tess.avitabile discovered race conditions, which are not trivial to fix without significant changes to the lock manager.
Instead of continuing this tight integration with the lock manager, the replication team will investigate making replication state transitions not depend on the Global X lock. As a result of this, the ReplicationStateTransitionLockGuard and its usages will no longer be necessary, so they should be reverted.
This includes the following commits:
- https://github.com/mongodb/mongo/commit/f96903979ac329a760e7b6f1bb5d8695d3daf2a7
- https://github.com/mongodb/mongo/commit/e65ff57e108ed69c46cc0b0ccbdd675663de2469
- https://github.com/mongodb/mongo/commit/9406af079a894bae80fbbec4703b04974bf84476
- https://github.com/mongodb/mongo/commit/c6d90316d6b694e12426274c713a4a078e004fc5
- is depended on by
-
SERVER-37244 Implement checkOutSessionForKill API and switch all non-migration callers to use it
- Closed
- is related to
-
SERVER-35870 Temporarily release locks on replica set stepdown
- Closed
-
SERVER-36913 Add functionality to LockManager to restore locks for prepared transactions during replset state transitions
- Closed
-
SERVER-37381 Allow prepared transactions to survive state transitions
- Closed
- related to
-
SERVER-37594 Dump all checked out sessions in the hang analyzer
- Closed
-
SERVER-37689 Make recovery from query yield interruptible
- Closed