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

Batch prepared commitTransaction/abortTransaction entries when possible

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.1.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Fully Compatible
    • v7.0
    • Repl 2023-04-17, Repl 2023-05-01
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      This is a follow-up of SERVER-72502, which batches prepareTransaction entries, while leaving commitTransaction/abortTransaction entries to be processed individually. Technically commits and aborts can be batched with other non-prepare oplog entries, except for certain edge cases (e.g. the prepareTransaction entries that they refer to are prepared prior to stepdown or prepared during to recovery/rollback, in which cases the prepared transactions have not been split). We cannot use splitSessionManager to check for transaction being split in OplogBatcher since that has race with OplogApplier, we need to investigate and do it in another way.

      EDIT: We ended up only allowing commitTransaction/abortTransaction to be batched with other commitTransaction/abortTransaction entries. This is good enough in terms of performance and introduces less risks.

            Assignee:
            wenbin.zhu@mongodb.com Wenbin Zhu
            Reporter:
            wenbin.zhu@mongodb.com Wenbin Zhu
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved:
              None
              None
              None
              None