-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Engines - Transactions
-
120.177
-
SE Transactions - 2026-10-23
-
3
Issue Summary
Update time aggregate verification so a partially deleted or mixed child is not rejected solely because its stop-durable timestamp exceeds the parent's page-stop aggregate. This is needed for WT-13076 downgrade compatibility while preserving checkpoint cleanup's ability to distinguish internal pages with fully deleted descendants.
Context
- WT-13076 changes the aggregate semantics: newest_page_stop_durable_ts tracks fully deleted pages, while newest_durable_ts covers all modifications.
- Older verification requires a child's newest_stop_durable_ts to be no greater than the parent's newest_stop_durable_ts. That comparison can fail when the child contains partial deletes but the parent has no fully deleted child.
- The child stop value remains bounded by the parent's overall durable aggregate; the strict stop-to-stop comparison is meaningful when the child is fully deleted.
- Keep this as a validation change: do not repurpose reserved cell bits, add a secondary flags byte, or introduce a new on-disk format version.
- Related: WT-13076.
Proposed Solution
- On develop, adjust time aggregate parent/child validation to compare the child's stop aggregate against the parent's stop aggregate when the child is fully deleted.
- For children that are not fully deleted, avoid rejecting them based only on the parent stop aggregate; retain a check against the parent's overall durable bound.
- Use the aggregate's full-deletion invariant for this decision. Do not use WT_TIME_AGGREGATE_HAS_STOP, which indicates that some content has a stop, not that the entire child is deleted.
- Add regression coverage for a partially deleted child, a fully deleted child, and mixed siblings where a fully deleted child has an older timestamp than a live child.
- After the develop change is reviewed and landed, backport the corresponding validation change and tests to mongodb-9.0 so its verifier accepts files produced by WT-13076.
Acceptance Criteria
- Mixed or partially deleted children do not fail verification solely because their stop durable value exceeds the parent's page-stop value.
- Fully deleted children remain checked against the parent's stop aggregate.
- The relaxed case remains bounded by the parent's overall durable aggregate.
- Existing timestamp, transaction, and prepared-state validation remains intact.
- No on-disk encoding, descriptor bits, flags bytes, or B-tree format version are changed.
- Upgrade/downgrade tests verify mongodb-9.0 can verify, read, modify, checkpoint, and finally verify the mixed-deletion data after the backport.
- is related to
-
WT-13076 Repurpose the time aggregate values to track page level stop timestamp
-
- Open
-