-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Verify
-
Security Level: Public (Available to anyone on the web)
-
Storage Engines, Storage Engines - Persistence
-
5,342.356
-
SE Persistence - 2025-11-07
-
3
We currently dump checkpoint extent list information when we encounter a checksum mismatch in a block. This aids us in identifying whether the block checkpoint information is correct or not (are we reading from a valid offset?).
Doing the same thing when we encounter the "ranges never verified error" will similarly help us when diagnosing the root cause of the file ranges mismatch.
wti_block_read_off does the extent list dump here:
/*
* Dump the extent lists associated with all available checkpoints in the system. Viewing the
* state of the extent lists in the event of a read error can help pinpoint the reason for the
* read error. Since dumping the extent lists also requires reading the block, we must set the
* WT_SESSION_DUMPING_EXTLIST flag to ensure we don't recursively attempt to dump extent lists.
*/
if (!F_ISSET(session, WT_SESSION_DUMPING_EXTLIST)) {
F_SET(session, WT_SESSION_DUMPING_EXTLIST);
/* Dump the live checkpoint extent lists. */
WT_IGNORE_RET(__wti_block_extlist_dump(session, &block->live.alloc));
WT_IGNORE_RET(__wti_block_extlist_dump(session, &block->live.avail));
WT_IGNORE_RET(__wti_block_extlist_dump(session, &block->live.discard));
/* Dump the rest of the extent lists associated with any other valid checkpoints in the
* file. */
WT_IGNORE_RET(__wti_block_checkpoint_extlist_dump(session, block));
F_CLR(session, WT_SESSION_DUMPING_EXTLIST);