Dropping a layered table discards drained but uncheckpointed data

XMLWordPrintableJSON

    • Storage Engines - Foundations
    • 42.384
    • SE Foundations - 2026-08-18
    • 3

      A drop of a layered table whose stable constituent holds drained-but-not-yet-checkpointed rows succeeds and silently discards those rows. The two-phase drop contract requires an unpublished drop to leave the data readable until the drop is published.

      The step-up ingest drain fills the awaiting-publication (in-memory-semantics) stable constituent via bare __wt_row_modify (__layered_move_updates), bypassing the transaction-commit path that maintains btree->min_unpublished_durable_ts (sole caller: txn.c). The WT-18217 guard in __drop_issue_trim therefore sees WT_TS_NONE and lets the drop proceed; closing the stays-in-memory btree discards its content without writing (conn_dhandle.c).

      Suggested fix: have the drain maintain the guard — call __wt_btree_update_unpublished_min with each drained update's durable timestamp — so the drop is refused until a checkpoint publishes and covers the table, matching the commit-path behavior.

            Assignee:
            Alex Blekhman
            Reporter:
            Alex Blekhman
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: