From fdec286e82361a46cbd56874dbae38daaee62622 Mon Sep 17 00:00:00 2001 From: xy Date: Fri, 17 Nov 2023 16:59:36 +0800 Subject: [PATCH] [optimize](cooldown)Shorten the _meta_lock lock interval (#27118) Change the two passes of _rs_version_map to one, reducing cpu overhead and shortening the lock interval of _meta_lock Co-authored-by: xingying01@corp.netease.com --- be/src/olap/tablet.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index aed65ee231..b981858965 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -2296,23 +2296,22 @@ Status Tablet::_follow_cooldowned_data() { return Status::InternalError("tablet not running"); } - for (auto& [v, rs] : _rs_version_map) { - if (v.second == cooldowned_version) { - version_aligned = true; - break; - } - } - if (!version_aligned) { - return Status::InternalError("cooldowned version is not aligned"); - } for (auto& [v, rs] : _rs_version_map) { if (v.second <= cooldowned_version) { overlap_rowsets.push_back(rs); + if (!version_aligned && v.second == cooldowned_version) { + version_aligned = true; + } } else if (!rs->is_local()) { return Status::InternalError( "cooldowned version larger than that to follow"); } } + + if (!version_aligned) { + return Status::InternalError("cooldowned version is not aligned"); + } + std::sort(overlap_rowsets.begin(), overlap_rowsets.end(), Rowset::comparator); auto rs_pb_it = cooldown_meta_pb.rs_metas().begin(); auto rs_it = overlap_rowsets.begin();