-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Tools
-
None
-
Storage Engines, Storage Engines - Persistence
-
SE Persistence - 2025-12-19, SE Persistence - 2026-01-02
-
3
Disagg pages can be fetched from SLS for decoding. These pages will be of varying sizes and unaligned to any byte boundary. We should support decoding multiple page dumps from a single file to inspect multiple pages such as a delta chain. This will also be useful should we choose to dump an entire delta chain if a single page in the chain is corrupted.
Example delta chain from WiredTiger logs:
[1765258643:985883][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 111, 67, 0x16cc8b27}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 17 00 00 00 00 00 00 00 43 00 00 00 02 00 00 00 06 20 00 01 db 01 01 2c 27 8b cc 16 00 00 00 00 01 00 00 00 05 00 38 2a c0 24 a5 8a 8e 00 c0 24 81 c0 29 c0 28 c0 00 54 79 ba 6c
[1765258643:986002][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 64, 0x6cba7954}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 16 00 00 00 00 00 00 00 40 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c 54 79 ba 6c 24 f2 49 d4 01 00 00 00 09 30 00 8c 28 c0 2e a5 80 8a 88 62 62 62 30 2d 31 30 00 00
[1765258643:986026][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0xd449f224}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c 24 f2 49 d4 a1 53 4b 09 01 00 00 00 09 30 00 8c 28 c0 2d a2 80 89 87 62 62 62 30 2d 39 00 00
[1765258643:986052][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0x94b53a1}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c a1 53 4b 09 53 28 77 5b 01 00 00 00 09 30 00 8c 28 c0 2c 9f 80 89 87 62 62 62 30 2d 38 00 00
[1765258643:986067][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0x5b772853}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c 53 28 77 5b 68 87 7a 8a 01 00 00 00 09 30 00 8c 28 c0 2b 9c 80 89 87 62 62 62 30 2d 37 00 00
[1765258643:986082][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0x8a7a8768}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c 68 87 7a 8a cb 3f 93 d2 01 00 00 00 09 30 00 8c 28 c0 2a 99 80 89 87 62 62 62 30 2d 36 00 00
[1765258643:986097][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0xd2933fcb}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c cb 3f 93 d2 5a c3 21 0f 01 00 00 00 09 30 00 8c 28 c0 29 96 80 89 87 62 62 62 30 2d 35 00 00
[1765258643:986111][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0xf21c35a}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c 5a c3 21 0f c3 d9 3c 3c 01 00 00 00 09 30 00 8c 28 c0 28 93 80 89 87 62 62 62 30 2d 34 00 00
[1765258643:986128][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0x3c3cd9c3}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c c3 d9 3c 3c 49 77 0c 45 01 00 00 00 09 30 00 8c 28 c0 27 90 80 89 87 62 62 62 30 2d 33 00 00
[1765258643:986142][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0x450c7749}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c 49 77 0c 45 db bb a1 49 01 00 00 00 09 30 00 8c 28 c0 26 8d 80 89 87 62 62 62 30 2d 32 00 00
[1765258643:986156][7884:0x7fa6eefc4540], file:test_layered18.wt_stable/WiredTigerCheckpoint.11, WT_CURSOR.search: [WT_VERB_DEFAULT][ERROR]: int __wt_bm_corrupt_dump(WT_SESSION_IMPL *, WT_ITEM *, uint32_t, wt_off_t, uint32_t, uint32_t), 91: {0: 100, 63, 0x49a1bbdb}: (chunk 1 of 1): 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 3f 00 00 00 02 00 00 00 07 00 00 00 dd 01 01 2c db bb a1 49 8e 47 e2 ff 01 00 00 00 09 30 00 8c 28 c0 25 8a 80 89 87 62 62 62 30 2d 31 00 00