diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp index 028e9432cc904a..e575b3bb78b7ce 100644 --- a/be/src/olap/tablet_meta.cpp +++ b/be/src/olap/tablet_meta.cpp @@ -1081,25 +1081,19 @@ void TabletMeta::_check_mow_rowset_cache_version_size(size_t rowset_cache_versio rowset_cache_version_size > _rs_metas.size() + _stale_rs_metas.size()) { std::stringstream ss; auto rowset_ids = _delete_bitmap->get_rowset_cache_version(); - for (const auto& rowset_id : rowset_ids) { - bool found = false; + std::set tablet_rowset_ids; + { + std::shared_lock rlock(_meta_lock); for (auto& rs_meta : _rs_metas) { - if (rs_meta->rowset_id() == rowset_id) { - found = true; - break; - } - } - if (found) { - continue; + tablet_rowset_ids.emplace(rs_meta->rowset_id().to_string()); } for (auto& rs_meta : _stale_rs_metas) { - if (rs_meta->rowset_id() == rowset_id) { - found = true; - break; - } + tablet_rowset_ids.emplace(rs_meta->rowset_id().to_string()); } - if (!found) { - ss << rowset_id.to_string() << ", "; + } + for (const auto& rowset_id : rowset_ids) { + if (tablet_rowset_ids.find(rowset_id) == tablet_rowset_ids.end()) { + ss << rowset_id << ", "; } } // size(rowset_cache_version) <= size(_rs_metas) + size(_stale_rs_metas) + size(_unused_rs) @@ -1440,11 +1434,11 @@ void DeleteBitmap::clear_rowset_cache_version() { VLOG_DEBUG << "clear agg cache version for tablet=" << _tablet_id; } -std::set DeleteBitmap::get_rowset_cache_version() { - std::set set; +std::set DeleteBitmap::get_rowset_cache_version() { + std::set set; std::shared_lock l(_rowset_cache_version_lock); for (auto& [k, _] : _rowset_cache_version) { - set.insert(k); + set.insert(k.to_string()); } return set; } diff --git a/be/src/olap/tablet_meta.h b/be/src/olap/tablet_meta.h index cce0afcd560beb..49f32ac6e28f25 100644 --- a/be/src/olap/tablet_meta.h +++ b/be/src/olap/tablet_meta.h @@ -585,7 +585,7 @@ class DeleteBitmap { void clear_rowset_cache_version(); - std::set get_rowset_cache_version(); + std::set get_rowset_cache_version(); private: DeleteBitmap::Version _get_rowset_cache_version(const BitmapKey& bmk) const;