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

Partial transactions before the beginApplyingTimestamp in sync_tail cannot be read.

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.1.12
    • Component/s: Replication
    • Labels:
      None

      Description

      For initial sync, we have the beginFetchingTimestamp which tells us when to start retrieving the oplog to make sure we have all partial transactions, and the beginApplyingTimestamp which tells us when to start applying those oplog entries (anything before that is assumed to have been applied).  If an oplog application batch has partial entries for a transaction before and including beginApplyingTimestamp, and a commit or prepare entry after, these entries may not have been written to the oplog and will not be found, causing an fassert.

       

       

      There are two possible ways to fix this:

      1) Always place a batch boundary just after beginApplyingTimestamp (the oplog entry with that timestamp is not applied  or

       

      2) "Apply" partial transactions even when they are <= the beginApplyingTimestamp.

       

      The first should be more straightforward, as the second requires special handling of commit, abort, and prepare also (it must clear the partial transaction list for that transaction for the current batch)

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: