-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Block Manager
-
None
-
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) {