ff2914a105766b1eb593d231d4746b58ac798df0
get_record() previously returned None for any payload lacking a TLV envelope (4-byte header-len | header | body). Records written through the raw path (put_raw / the daemon's 'rawput' verb, used by every OS-layer service) carry no envelope, so callers such as cubefs getattr/read and the 'stat' verb mapped that None to size 0 / empty file: real bytes became SILENTLY INVISIBLE through the filesystem while rawget still returned them. This broke the OS-in-CUBE migration (2026-08-13): every rawput OS record listed as a 0-byte file in /cubefs, which also surface-invalidated the 'the OS boots from cube' resume path. Now a payload that is not a well-formed envelope is surfaced as a raw body under a synthesized header whose size_bytes reports the true length. Enveloped records still decode their real header (no behavior change on the record path). Adds two regression tests: get_record_surfaces_raw_unenveloped_payloads and get_record_still_prefers_the_real_envelope (cargo test -p cubestore: 5/5).
Description
No description provided
536 KiB
Languages
Rust
94.5%
Python
2.8%
Shell
2.7%