The TransactionCoordinator performs an update to the config.transaction_coordinators on the local shard to write down its commit or abort decision for the cross-shard transaction. During this step of the two-phase commit coordination, the cross-shard transaction is in the prepared state on the participant shards. This means other multi-statement transactions can hit a prepare conflict while waiting for the former cross-shard transaction to commit or abort. These other multi-statement transactions will block while holding storage resources, including a WiredTiger write ticket. It is therefore possible for all WiredTiger write tickets in the system to be temporarily exhausted due to a prepare conflict. It would be less disruptive to the system if the TransactionCoordinator could still write down its decision locally in this situation so that it can more rapidly deliver the decision to the participant shards and clear their prepared state.
Note that after transactionLifetimeLimitSeconds have elapsed (defaults to 1 minute), the multi-statement transactions holding the WiredTiger write tickets will be aborted and will release their ticket and enable the TransactionCoordinator to successfully acquire it.
- is related to
-
SERVER-57476 Operation may block on prepare conflict while holding oplog slot, stalling replication indefinitely
- Closed
-
SERVER-82883 Recovering TransactionCoordinator on stepup may block acquiring read/write tickets while participants are in the prepared state
- Closed
- related to
-
SERVER-65821 Deadlock during setFCV when there are prepared transactions that have not persisted commit/abort decision
- Closed
-
SERVER-60685 TransactionCoordinator may interrupt locally executing update with non-Interruption error category, leading to server crash
- Closed
-
SERVER-39995 Add concurrency_simultaneous_sharding.yml
- Backlog