-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: History Store
-
None
-
Storage Engines
-
None
-
None
For correctness, the follower cannot just use shared history store at the most recent checkpoint, because that history store may have values that have aged out. Consider for key 'A' on the leader:
timestamp 10: 'A' <- 'W' inserted
timestamp 20: 'A' <- 'X' updated
timestamp 30: checkpoint
timestamp 40: 'A' <- 'Y' updated
timestamp 50: 'A' <- 'Z' updated
oldest timestamp set to 20
value 'W' ages out of history store.
timestamp 60: checkpoint
At timestamp 60, the shared history store does not contains A=W for any timestamp.
Meanwhile the follower has checkpoint 30. A read transaction starts, read timestamp 10. Perhaps the cursor on this table is open already, perhaps not. During the transaction, the checkpoint at 60 is picked up. Then the transaction reads value 'A'. It cannot use the most recent history store, which does not contains 'W', it must use the history store based on the read timestamp.
This ticket is spun off of WT-15800, since it's really a separate issue from the main focus there.