-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Storage Execution
Background:
- At the time of writing, a WUOW does not replicate transactionally: a WUOW involving multiple document writes generates one oplog entry (and timestamp) per write. SERVER-55909 aims to address this issue, and make WUOW's replicate much like multi-document transactions.
SERVER-63047implements SERVER-55909 for a specific use case - batching large deletions efficiently. It does so by introducing a BatchedWriteContext and plugging the WUOW commit into the OpObserver multi-document transaction commit logic.
We should unify the BatchedWriteContext and TransactionParticipant replication logic. This may also simplify the work needed for SERVER-55909.
Proposal: the TransactionParticipant should be using BatchedWriteContext to store operation state, rather than keeping it as private context on its own type, and then when we're stashing transactions between statements, we should be stashing the BWC as well. With this approach, we should also be in a position to unify the OpObserverImpl::onUnpreparedTransactionCommit and OpObserverImpl::onBatchedWriteCommit functions.
- is related to
-
SERVER-55909 Prevent a single WUOW from writing multiple oplog entries by default
- Backlog
-
SERVER-63047 Make delete batches fully transactional
- Closed
- related to
-
SERVER-68860 add container type to hold replicated operations for TransactionParticipant
- Closed