Symptom
Disaggregated follower verification intermittently fails in test_verify_disagg.test_verify_disagg(empty.palite) with EINVAL: __time_value_validate_parent_stable reports "time window has a durable start time after the stable point with an empty parent aggregate time window". In BFG-3680460 the cell durable start is 26737; in BFG-3675814 it is 27034. The checkpoint-authored parent time aggregate is empty, and the follower has no stable timestamp set (0). These are distinct from the historical WT-15901 error where a value start precedes a non-empty parent aggregate oldest_start.
Affected task IDs:
- BFG-3680460: wiredtiger_ubuntu2004_nonstandalone_unit_test_bucket01_91f28f0e3befa4a368555687c0f998db675be980_26_09_25_16_42_51
- BFG-3675814: wiredtiger_ubuntu2004_arm64_unit_test_3c946ab7f1cc3a06f742d222615c7ca5fc899eea_26_09_23_23_59_37
Reproducer
In the WT-15901 investigation worktree, test/suite/test_verify_disagg07.py creates a leader full image, checkpoints a leaf delta, advances the follower to the checkpoint without setting the follower stable timestamp, checks that a delta was written and that both leader verify and follower data reads work, then calls follower verify. Run from build/: python ../test/suite/run.py test_verify_disagg07. Full-image control passes; delta scenario fails with stable time (0, 0) and cell durable start 10 against an empty parent aggregate. This is a deterministic regression reproducer, not evidence of data corruption.
Investigation and expected result
The leaf verifier detects a delta-reconstructed page, but _wt_time_value_validate routes an empty parent aggregate to _time_value_validate_parent_stable, which compares with the follower connection's live stable timestamp (unset, 0). The exact reason the checkpoint writer emitted an empty aggregate while this reconstructed cell retained a timestamp has not yet been isolated; do not assume all such errors are harmless. Verify should accept legitimate delta-reconstructed checkpoint data without relaxing real-corruption checks on ordinary full pages. Investigate the checkpoint visibility context and add a regression test that fails before and passes after the fix. Related broader verification-policy work: WT-18675. WT-15901 tracks the separate historical non-empty-parent failure, reproduced on 5600e127 and no longer reproduced on current code.
- is related to
-
WT-18675 Verify on a disaggregated checkpoint should use the checkpoint's own frame of reference, not the connection's live timestamps
-
- Open
-
-
WT-18809 Refactor time window validation so the caller supplies the stable bound
-
- Open
-
-
WT-15901 test_verify_disagg fails in __time_value_validate_parent
-
- Closed
-
- related to
-
WT-18809 Refactor time window validation so the caller supplies the stable bound
-
- Open
-