-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 4.0.16
-
Component/s: Replication
-
None
-
Fully Compatible
-
ALL
-
-
Repl 2020-03-09
-
(copied to CRM)
The following race leads to invariant failure:
The startPeriodicThreadToAbortExpiredTransactions thread kills the commitTransaction operation here. It then marks the transaction state as aborted here.
The commitTransaction operation gets interrupted and triggers an abort-guard here. However, since the transaction state was already marked as aborted, we skip the destruction of the WriteUnitOfWork here. This means that the commitTransaction operation is still in a WriteUnitOfWork when it waits for writeConcern, triggering this invariant.
This only occurs on 4.0, due to a refactor on 4.2, where transaction state can only be modified by the thread that checked out the session.
- is related to
-
SERVER-51598 Add new test suites that test transaction expiration logic
- Closed