-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Engines - Transactions
-
2.787
-
SE Transactions - 2026-12-18
-
None
Problem
A follower rejects a prepare, commit or durable timestamp at or below last_checkpoint_timestamp (__txn_check_follower_checkpoint_ts), and WT-19046 adds the same check for the rollback timestamp. That value is only updated when a checkpoint is adopted (conn_layered_checkpoint_pick_up.c).
Adoption can be deferred after the checkpoint has been delivered (WT-18156 for untimestamped reads, WT-18835 for timestamped reads below the checkpoint's oldest timestamp). While adoption is deferred, last_checkpoint_timestamp lags the newest delivered checkpoint, so a timestamp at or below the delivered checkpoint timestamp but above the adopted one is still accepted.
Proposed change
- Track the checkpoint timestamp of the newest delivered checkpoint, separately from the adopted one. Only the delivered LSN is tracked today (disagg_checkpoint_delivered_lsn).
- Validate prepare, durable and rollback timestamps against the delivered checkpoint timestamp instead of the adopted one.
- Add a test that sets a prepare, a durable and a rollback timestamp between the adopted and delivered checkpoint timestamps while adoption is deferred, and expects WT_EINVAL for each.
Dependency
Depends on WT-18835, which extends deferred adoption to timestamped reads and so widens the gap between delivered and adopted checkpoints.
Depends on WT-19046, which adds the follower checkpoint check to the rollback timestamp.
Open points
- Whether the commit timestamp should move to the delivered checkpoint timestamp too. The request covers prepare, durable and rollback only.
- How a leader should behave. __txn_check_follower_checkpoint_ts is skipped on the leader, and a leader's own checkpoint is never delivered to itself.