Push disagg_page_free_required into the block manager to simplify rec_write_wrapup

    • Type: Technical Debt
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Reconciliation
    • None
    • Storage Engines - Transactions
    • 141.444
    • None
    • None

      Right now rec_write_wrapup works out a disagg_page_free_required flag itself and then relies on it in a few places, it passes it to wt_ref_block_free to decide whether the block actually gets freed, it gates the tree size accounting on it (we only decrease the size when !disagg_page_free_required), and theres a separate disagg_page_free_required branch further down. A lot of the branching in wrapup only exists because we compute this in reconcile and then conditionally skip the free call.

      The idea is instead of figuring it out in reconcile and skipping wt_ref_block_free, we pass the flag down and dont skip the call. The block manager already takes a disagg_free_block arg so it can own the free plus the size accounting that comes off the back of it, and I think that lets us drop most of the conditional logic in rec_write_wrapup.

      Definition of done:

      • stop gating the wt_ref_block_free call on {{disagg_page_free_required }}in wrapup, always call it and let the block manager act on the flag
      • move the size decrease we do when the delta chain terminates to sit with the free in the block manager
      • remove the now redundant branches in rec_write_wrapup

      Came out of the WT-16666 review, thanks luke.pearson@mongodb.com for raising it.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Mariam Mojid
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: