Review block metadata data structures in reconciliation

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Reconciliation
    • Storage Engines, Storage Engines - Persistence
    • None
    • None

      The disaggregated storage implementation in WiredTiger has introduced a new block manager. The new block manager tracks more metadata per page that is written, and WiredTiger keeps that in a data structure called WT_PAGE_BLOCK_META, which is currently defined in src/include/btmem.h. It really should belong in a block-manager specific location, and the content there needs to be carefully considered - since it belongs to one of two block managers access and sharing should be considered to ensure layering makes sense.

      A specific example (and it would be fine for it to be the purview of this ticket), is in the WT_PAGE_MODIFY data structure. On of the things the page modify structure holds is a reference to the most recent reconciled version of the page. This takes one of two forms a WT_MULTI structure if the reconciliation resulted in multiple reconciled pages, or an embedded mod_replace if a single page was generated. At the moment, each entry in a WT_MULTI structure keeps a WT_PAGE_BLOCK_META, but for a replace reconciliation no WT_PAGE_BLOCK_META is kept. I suspect what happens is that the page->block_meta is replaced with the one associated with the reconciled page, but I haven't dug deep enough to find out.

      The WT_PM_REC_REPLACE and WT_PM_REC_MULTI should keep the associated WT_PAGE_BLOCK_META in similar ways.

              Assignee:
              Unassigned
              Reporter:
              Alexander Gorrod
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: