Fix incorrect version check in WT_BLOCK_DISAGG_HEADER

XMLWordPrintableJSON

    • Storage Engines - Persistence
    • 591.695
    • SE Persistence backlog
    • None

      The disagg block manger makes an incorrect version check here:

                      if (swap.compatible_version > WT_BLOCK_DISAGG_COMPATIBLE_VERSION) {
                          __block_disagg_read_err(session, block_disagg->name, block_disagg->tableid,
                            size, page_id, lsn, is_delta, result,
                            "compatible version error, version %" PRIu8
                            " is greater than compatible version of %" PRIu8,
                            swap.compatible_version, WT_BLOCK_DISAGG_COMPATIBLE_VERSION);
                          goto corrupt;
                      }
      

      In the header,

      • version is the version of the writer.
      • compatible_version is the oldest version that can safely read the header.

      For example, if version = 2 and compatible_version = 1, both versions 1 and 2 can read this. If version = 2 and compatible_version = 2, only version 2 can read this. If we have version = 4 and compatible_version = 2, then versions 2 through 4 can read this. In other words, the right comparison should be:

                      if (swap.compatible_version > WT_BLOCK_DISAGG_VERSION) {
      

            Assignee:
            Etienne Petrel
            Reporter:
            Peter Macko
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: