-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
None
-
Fully Compatible
-
v4.2
-
Repl 2019-07-01, Repl 2019-07-15, Repl 2019-07-29, Repl 2019-08-12
After SERVER-41163, we will have several different commit oplog application paths for transactions.
It's possible that some of these paths (i.e. recovery) were needed before the Oplog Durability project. But, now that we come back up at a consistent snapshot, it's probably unnecessary to commit these operations in the same WUOW.
During initial sync, it is enough to commit each operation using the commit oplog entry timestamp. We don't need to put them back through prepare because we know that the changes have already been committed.
Timestamping during replication recovery is a little trickier since we would probably need to timestamp writes at the commitTimestamp. After SERVER-37180, it would be easy to track the relevant timestamp information in OplogEntry instead of having to thread it through multiple layers in SyncTail.
We should investigate if we actually need to keep the initial sync and recovery code paths separate for commit oplog entry application.
- depends on
-
SERVER-41163 During initial sync, failing to apply an update thats in a prepared txn hits an invariant
- Closed
-
SERVER-41788 Add OplogApplication::Mode to options in the OplogApplier
- Closed
- related to
-
SERVER-70764 remove unused function getPreviousOplogEntry()
- Closed