-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Test Format
-
None
-
Storage Engines, Storage Engines - Transactions
-
0.001
-
SE Transactions - 2026-07-17
-
3
Description:
The async disagg step-down path in test/format has two bugs.
- stepdown_workers_drained() polls all_durable, which only sees timestamps registered via timestamp_transaction(). A worker allocates its commit timestamp before registering it with WT, so it can hold a timestamp at or below step_down_ts that WT doesn't yet know about — the drain can finish early and that commit lands behind stable. Drain on timestamp_minimum_committed() instead (the same signal timestamp_once() uses), and enforce timer-based runs since an exhausted runs.ops budget would stall the drain.
- disagg_switch_roles() pins stable at step_down_ts without updating g.stable_timestamp, format's cached view of stable, leaving it stale for the entire follower phase. Set g.stable_timestamp = g.stepdown_ts after the set_timestamp call, consistent with timestamp_once().