Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-41437

Unify transaction oplog traversal

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.3.1
    • 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.

            Assignee:
            judah.schvimer@mongodb.com Judah Schvimer
            Reporter:
            pavithra.vetriselvan@mongodb.com Pavithra Vetriselvan
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: