• Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Truncate
    • None
    • Storage Engines - Foundations
    • 27.211
    • None
    • None

      Summary: Return an error instead of aborting when truncate is called while the step-down timestamp is set

      Problem

      • __wt_layered_truncate has WT_ASSERT_ALWAYS(step_down_timestamp == WT_TS_NONE); it fires in release builds.
      • Per-key writes in the same window are routed to ingest or mirrored and straddling transactions get WT_ROLLBACK.
      • test/format disables ops.truncate under disagg.stepdown_async to avoid the abort.

      Scenario

      • Leader in planned step-down; any thread calls WT_SESSION::truncate on a layered: table (MongoDB: pre-image and change-collection removers not verified to stop before the timestamp is reserved).

      Definition of Done

      • Replace the assertion with an error return (WT_ROLLBACK or ENOTSUP, to be decided) so the caller can retry after the role change.
      • Python test: truncate during the step-down window returns the error and leaves no partial state.
      • Re-enable ops.truncate under disagg.stepdown_async in test/format or file a follow-up if the drain still cannot account for truncates.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Yury Ershov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: