-
Type:
Investigation
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Tools and Replicator
-
0
This change writes an additional field allowEndOfTransaction into the final applyOps oplog entry of a replica set transaction.
The field is defined as an optional boolean.
It will be set to true if the feature flag featureFlagChangeStreamEndOfTransactionEventSynthesis is enabled and the server parameter allowEndOfTransaction is set.
In all other cases, the field will not be set (i.e. it will be missing from the applyOps oplog entry).
The new field will be used later by change streams to generate a final endOfTransaction change event for SPM-4826.
The applyOps oplog entry IDL struct is strict:false, so older versions (e.g. 9.0 should still be able to read the applyOps entry and simply ignore the field they do not know about.
Description of Linked Ticket
This change writes an allowEndOfTransaction flag into the final applyOps oplog entry of replica set transactions if the server parameter allowEndOfTransactions is enabled.
This allows change streams to unambiguously determine the final applyOps entry in a non-sharded transaction and if the parameter was enabled at commit time.
Sharded transaction oplog augmentation will follow in a separate commit.
This work is part of SPM-4826.
- depends on
-
SERVER-137816 Write `allowEndOfTransaction` flag into applyOps
-
- Closed
-