-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Block Manager
-
None
-
Storage Engines, Storage Engines - Persistence
-
SE Persistence - 2025-08-15
-
None
To make the address cookie more future-proof, use bit packing that allows encoding any arbitrary number (while being more efficient for smaller values).
The proposed packing format is:
- The encoded data is split into 4-bit chunks: F v v v.
- If the first bit (MSB) is 0, this is the last chunk.
- If the MSB is 1, the next chunk is a part of the same number.
- The remaining 3 bits encode the value.
- For chunks beyond the first, the actual value is one greater than what's decoded.
- The sequence is LSB-first, meaning the least significant chunk comes first.
- Rationale: simplifies encoding and decoding.
- The low half of the byte holds the first chunk, the high half holds the second.
- Rationale: small integers encode to their own value making debugging easier.
For encoding signed integers, apply a zigzag-like transformation first to convert them into positive integers, then use the above bit-packing scheme to encode the result.
Why 4-bit packing?
- Offers a reasonable compression rate.
- Encoding/decoding is lightweight.
- Two small values (less than 8) fit in a single byte.
A demo/proof-of-concept Python implementation is attached.
- is related to
-
WT-15133 Change prepare commit and rollback logic
-
- Closed
-
-
WT-15150 To allow the database without the preserve prepared config to read data written by a database with the config
-
- Closed
-
-
WT-15162 Enable test/format disagg follower mode on evergreen
-
- Closed
-
-
WT-15160 Log deleting local files
-
- Closed
-
- related to
-
WT-15085 ASAN heap-buffer-overflow in __meta_live_restore_to_meta
-
- Closed
-
-
WT-15089 Add an additional case to test_live_restore01.py
-
- Closed
-
-
WT-14744 Upgradable structure packing format
-
- Open
-
-
WT-13429 Variable cfg marked as unused while used
-
- Closed
-