Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-2649

Some way to indicate valid points in the WT log

    • Type: Icon: New Feature New Feature
    • Resolution: Duplicate
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None

      Mongodb replication applies writes in batches with a process that looks something like the following to go from timepoint A to B:

      1. Block out all readers
      2. Commit a write that indicates that we are invalid and that we must reach B before becoming valid
      3. Divide the writes in the batch to many threads. Each thread does its writes in arbitrary order in multiple WT commits.
      4. Commit a write that marks the data as valid
      5. Unblock readers

      One downside to this approach is that if a server is killed at a random time, the probability of the wt log replaying to a point that is invalid is high on a system with a high throughput of writes. This is made worse by SERVER-24223.

      It would be helpful if we could indicate to WT somehow when we are in a valid state, such that on startup, following log-replay we would always be valid. One (suboptimal) solution would be to create a named checkpoint with a fixed name at each valid point and roll back to that snapshot on startup.

            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            mathias@mongodb.com Mathias Stearn
            0 Vote for this issue
            4 Start watching this issue