@@ -36,6 +36,8 @@ static std::string delvec_cache_key(int64_t tablet_id, const DelvecPagePB& page)
3636 DelvecCacheKeyPB cache_key_pb;
3737 cache_key_pb.set_id (tablet_id);
3838 cache_key_pb.mutable_delvec_page ()->CopyFrom (page);
39+ // Do not include crc32c_gen_version in cache key
40+ cache_key_pb.mutable_delvec_page ()->clear_crc32c_gen_version ();
3941 return cache_key_pb.SerializeAsString ();
4042}
4143
@@ -458,6 +460,7 @@ Status MetaFileBuilder::_finalize_delvec(int64_t version, int64_t txn_id) {
458460 each_delvec.second .set_offset (iter->second .offset ());
459461 each_delvec.second .set_size (iter->second .size ());
460462 each_delvec.second .set_crc32c (iter->second .crc32c ());
463+ each_delvec.second .set_crc32c_gen_version (version);
461464 // record from cache key to segment id, so we can fill up cache later
462465 _cache_key_to_segment_id[delvec_cache_key (_tablet_meta->id (), each_delvec.second )] = iter->first ;
463466 _delvecs.erase (iter);
@@ -467,6 +470,7 @@ Status MetaFileBuilder::_finalize_delvec(int64_t version, int64_t txn_id) {
467470 // 2. insert new delvec to meta
468471 for (auto && each_delvec : _delvecs) {
469472 each_delvec.second .set_version (version);
473+ each_delvec.second .set_crc32c_gen_version (version);
470474 (*_tablet_meta->mutable_delvec_meta ()->mutable_delvecs ())[each_delvec.first ] = each_delvec.second ;
471475 // record from cache key to segment id, so we can fill up cache later
472476 _cache_key_to_segment_id[delvec_cache_key (_tablet_meta->id (), each_delvec.second )] = each_delvec.first ;
@@ -606,7 +610,7 @@ Status get_del_vec(TabletManager* tablet_mgr, const TabletMetadata& metadata, ui
606610 ASSIGN_OR_RETURN (auto rf,
607611 fs::new_random_access_file (opts, tablet_mgr->delvec_location (metadata.id (), delvec_name)));
608612 RETURN_IF_ERROR (rf->read_at_fully (iter->second .offset (), buf.data (), iter->second .size ()));
609- if (iter->second .has_crc32c ()) {
613+ if (iter->second .has_crc32c () && iter-> second . crc32c_gen_version () == iter-> second . version () ) {
610614 // check crc32c
611615 uint32_t crc32c = crc32c::Value (buf.data (), iter->second .size ());
612616 if (crc32c != crc32c::Unmask (iter->second .crc32c ())) {
0 commit comments