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.
- depends on
-
SERVER-29892 Roll Back to Checkpoint: Make IDL file and helpers in replication consistency markers to read and write the checkpoint timestamp
- Closed
-
SERVER-30310 Have WiredTigerKVEngine implement StorageEngine::setStableTimestamp/setInitialDataTimestamp
- Closed
-
SERVER-29210 Create a thread in MongoDB to manage WiredTiger checkpoints
- Closed
-
WT-3387 Add support for a stable timestamp
- Closed
- is depended on by
-
SERVER-29901 Roll Back to Checkpoint: Create an evergreen variant that runs new rollback code
- Closed
-
SERVER-29211 Change to explicitly journal a subset of content in WiredTiger
- Closed
-
SERVER-29494 WT validate should wait for explicit checkpoint
- Closed
- is related to
-
SERVER-29900 Roll Back to Checkpoint: Control when/how WT checkpoints are taken WRT new timestamps
- Closed