Skip to content

Commit 0c53349

Browse files
authored
fix: move sst meta offset to the end of the object (risingwavelabs#8524)
1 parent d49a4c5 commit 0c53349

File tree

1 file changed

+3
-2
lines changed
  • src/storage/src/hummock/sstable

1 file changed

+3
-2
lines changed

src/storage/src/hummock/sstable/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ impl SstableMeta {
280280
/// | smallest key len (4B) | smallest key |
281281
/// | largest key len (4B) | largest key |
282282
/// | range-tombstone 0 | ... | range-tombstone M-1 |
283+
/// | file offset of this meta block (8B) |
283284
/// | checksum (8B) | version (4B) | magic (4B) |
284285
/// ```
285286
pub fn encode_to_bytes(&self) -> Vec<u8> {
@@ -299,11 +300,11 @@ impl SstableMeta {
299300
buf.put_u32_le(self.key_count);
300301
put_length_prefixed_slice(buf, &self.smallest_key);
301302
put_length_prefixed_slice(buf, &self.largest_key);
302-
buf.put_u64_le(self.meta_offset);
303303
buf.put_u32_le(self.range_tombstone_list.len() as u32);
304304
for tombstone in &self.range_tombstone_list {
305305
tombstone.encode(buf);
306306
}
307+
buf.put_u64_le(self.meta_offset);
307308
let checksum = xxhash64_checksum(&buf[start_offset..]);
308309
buf.put_u64_le(checksum);
309310
buf.put_u32_le(VERSION);
@@ -340,13 +341,13 @@ impl SstableMeta {
340341
let key_count = buf.get_u32_le();
341342
let smallest_key = get_length_prefixed_slice(buf);
342343
let largest_key = get_length_prefixed_slice(buf);
343-
let meta_offset = buf.get_u64_le();
344344
let range_del_count = buf.get_u32_le() as usize;
345345
let mut range_tombstone_list = Vec::with_capacity(range_del_count);
346346
for _ in 0..range_del_count {
347347
let tombstone = DeleteRangeTombstone::decode(buf);
348348
range_tombstone_list.push(tombstone);
349349
}
350+
let meta_offset = buf.get_u64_le();
350351

351352
Ok(Self {
352353
block_metas,

0 commit comments

Comments
 (0)