-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Truncate
-
None
-
Storage Engines - Foundations
-
27.254
-
None
-
None
Summary: Assert at step-up that no open transaction holds a follower truncate-list entry
Problem
- __disagg_step_up has no check for active transactions (step-down has __disagg_assert_no_active_writes_callback, diagnostic only).
- __layered_build_sorted_truncates selects every entry with a transaction id, including uncommitted ones.
- An uncommitted entry is replayed onto stable (diagnostic assert on start_ts; release stamps timestamp 0), then __wt_layered_table_truncate_clear frees it while the transaction's WT_TXN_OP_FOLLOWER_TRUNCATE still points at it.
Scenario
- Follower session truncates a range and does not commit; connection reconfigures to leader.
- Release build: range deleted on stable without a commit; later commit or rollback dereferences a freed entry.
Definition of Done
- Step-up asserts (diagnostic) that no session holds an uncommitted WT_TXN_OP_FOLLOWER_TRUNCATE; release build skips uncommitted entries in the drain or fails step-up with an error.
- Python test: step-up with an open follower truncate transaction hits the assert or error instead of replaying.