test format: correct the drain check and stable timestamp bookkeeping in async step-down

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Fixed
    • Priority: Major - P3
    • WT12.0.0, 9.1.0-rc0
    • 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.

      1. 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.
      2. 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().

            Assignee:
            Ravi Giri
            Reporter:
            Ravi Giri
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: