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

Ensure WiredTiger checkpoints are created at valid timestamps

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.5.11
    • Component/s: Storage
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Sprint:
      Storage 2017-06-19, Storage 2017-07-10, Storage 2017-07-31, Storage 2017-08-21

      Description

      Once MongoDB timestamps are available to a single node there are cases where MongoDB will need to more carefully control which timestamp a checkpoint is created from. There are two cosntraints:

      1) A checkpoint should not be created later than the common durable point across all nodes in a replica set.
      2) On a secondary a checkpoint should not be created in the middle of a batch of oplog entries being applied.

      Common durable point

      This is a requirement because it is possible for it to be necessary to recover a node to the oldest durable point after a replication election. If a checkpoint has been taken that is newer than that point in time, it's no longer possible to recover to the necessary earlier point in time.

      Secondary batch boundary

      MongoDB optimizes applying the operations from the oplog, by sharing them amongst threads. There are certain ordering constraints that need to be adhered to so MongoDB can guarantee identical data is present on each node. This is handled by grouping the operations together into batches, and splitting the works amongst threads with care to ensure the ordering constraints are adhered to. There are some corner cases where a constraint may be temporarily violated during batch apply once global timestamps are being used. Guaranteeing that collection data isn't flushed avoids the constraint violation.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              daniel.gottlieb Daniel Gottlieb
              Reporter:
              alexander.gorrod Alexander Gorrod
              Participants:
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: