Add a new field to the block header for the original checksums of pages modified "offline"

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Block Manager
    • None
    • Storage Engines - Persistence
    • 13.066
    • SE Persistence backlog
    • None

      WiredTiger allows the storage infrastructure behind the PALI layer to perform "offline" modifications to a page outside of the regular reconciliation path. We currently use this only in the block victim cache, in which WiredTiger caches a flattened version of a page, and then gets it back from PALI via __block_disagg_read_multiple. Needless to say, such "offline" modification changes the checksum of the page, because the page is no longer the original page.

      As of WT-16511, to verify that we are reading back the correct version of the page that we have expected, WiredTiger turns on the WT_BLOCK_DISAGG_MODIFIED flag and stores the checksum of the original page in previous_checksum. __block_disagg_read_multiple then uses swap.previous_checksum instead of swap.checksum to compare it with the expected checksum obtained from the internal page.

      However, this design results in the meaning of the previous_checksum field being overloaded based on the value of the flags, and more importantly, it prevents us from supporting offline-modified delta pages in the future. As such, we should store the value of the original checksum in a new dedicated field original_checksum.

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

              Created:
              Updated: