From 418ea0a24e59171aa8742425e05925e0c941968b Mon Sep 17 00:00:00 2001 From: Xin Liao Date: Tue, 4 Apr 2023 10:39:28 +0800 Subject: [PATCH] [fix](merge-on-write) fix that failed to capture_consistent_rowsets when full clone (#18346) When full clone, if the max version of the local table is less than or equal to the max version of the clone table, there is no need to calculate the delete bitmap again. --- be/src/olap/tablet.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index 4d45672219..4d4538a8aa 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -308,14 +308,17 @@ Status Tablet::revise_tablet_meta(const std::vector& to_add, CHECK_EQ(to_add_min_version, 0) << "to_add_min_version is: " << to_add_min_version; calc_delete_bitmap_ver = Version(to_add_max_version + 1, max_version().second); } - Status res = - capture_consistent_rowsets(calc_delete_bitmap_ver, &calc_delete_bitmap_rowsets); - // Because the data in memory has been changed, can't return an error. - CHECK(res.ok()) << "fail to capture_consistent_rowsets, res: " << res; - for (auto rs : calc_delete_bitmap_rowsets) { - res = update_delete_bitmap_without_lock(rs); - CHECK(res.ok()) << "fail to update_delete_bitmap_without_lock, res: " << res; + if (calc_delete_bitmap_ver.first <= calc_delete_bitmap_ver.second) { + Status res = + capture_consistent_rowsets(calc_delete_bitmap_ver, &calc_delete_bitmap_rowsets); + // Because the data in memory has been changed, can't return an error. + CHECK(res.ok()) << "fail to capture_consistent_rowsets, res: " << res; + + for (auto rs : calc_delete_bitmap_rowsets) { + res = update_delete_bitmap_without_lock(rs); + CHECK(res.ok()) << "fail to update_delete_bitmap_without_lock, res: " << res; + } } } // clear stale rowset