Closed 761417898 closed 5 months ago
The serialization and deserialization logic of TsFileMeta do not match, the handling of the bloom filter is missing during serialization.
TsFileMeta
int serialize_to(common::ByteStream &out) { int ret = common::E_OK; if (RET_FAIL(index_node_->serialize_to(out))) { } else if (RET_FAIL(common::SerializationUtil::write_i64(meta_offset_, out))) { } return ret; } int deserialize_from(common::ByteStream &in) { int ret = common::E_OK; void *index_node_buf = page_arena_->alloc(sizeof(MetaIndexNode)); void *bloom_filter_buf = page_arena_->alloc(sizeof(BloomFilter)); if (IS_NULL(index_node_buf) || IS_NULL(bloom_filter_buf)) { return common::E_OOM; } index_node_ = new (index_node_buf) MetaIndexNode(page_arena_); bloom_filter_ = new (bloom_filter_buf) BloomFilter(); if (RET_FAIL(index_node_->deserialize_from(in))) { } else if (RET_FAIL( common::SerializationUtil::read_i64(meta_offset_, in))) { } else if (RET_FAIL(bloom_filter_->deserialize_from(in))) { } return ret; }
The serialization and deserialization logic of
TsFileMeta
do not match, the handling of the bloom filter is missing during serialization.