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

Batch prepared commitTransaction/abortTransaction entries when possible

    XMLWordPrintableJSON

Details

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 7.1.0-rc0
    • None
    • None
    • None
    • Fully Compatible
    • v7.0
    • Repl 2023-04-17, Repl 2023-05-01

    Description

      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.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: