From b64b014284220742747622a9c23c13d01d48e85f Mon Sep 17 00:00:00 2001 From: meiyi Date: Mon, 21 Jul 2025 19:31:00 +0800 Subject: [PATCH] [fix](mow) fix agg delete bitmap for stale rowsets (#53611) ### What problem does this PR solve? Issue Number: close #xxx Related PR: #xxx Problem Summary: ``` F20250718 18:41:03.517045 377331 base_tablet.cpp:1752] Check failed: start_version < end_version . start_version: 147, end_version: 147 *** Check failure stack trace: *** @ 0x561faa3a6df6 google::LogMessage::SendToLog() @ 0x561faa3a3840 google::LogMessage::Flush() @ 0x561faa3a7639 google::LogMessageFatal::~LogMessageFatal() @ 0x561f6e3567d0 doris::BaseTablet::agg_delete_bitmap_for_stale_rowsets() @ 0x561faa25c065 doris::CloudTablet::delete_expired_stale_rowsets() @ 0x561faa2aa50b doris::CloudTabletMgr::vacuum_stale_rowsets() @ 0x561faa17b028 doris::CloudStorageEngine::_vacuum_stale_rowsets_thread_callback() ``` --- be/src/cloud/cloud_tablet.cpp | 4 ++-- be/src/olap/base_tablet.cpp | 3 +++ be/src/olap/tablet.cpp | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/be/src/cloud/cloud_tablet.cpp b/be/src/cloud/cloud_tablet.cpp index c3846c356a4ed3..6132270c4fd733 100644 --- a/be/src/cloud/cloud_tablet.cpp +++ b/be/src/cloud/cloud_tablet.cpp @@ -500,8 +500,8 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() { } add_unused_rowsets(expired_rowsets); - if (keys_type() == UNIQUE_KEYS && enable_unique_key_merge_on_write() && - !deleted_stale_rowsets.empty()) { + if (config::enable_agg_and_remove_pre_rowsets_delete_bitmap && keys_type() == UNIQUE_KEYS && + enable_unique_key_merge_on_write() && !deleted_stale_rowsets.empty()) { // agg delete bitmap for pre rowsets; record unused delete bitmap key ranges OlapStopWatch watch; for (const auto& [version, unused_rowsets] : deleted_stale_rowsets) { diff --git a/be/src/olap/base_tablet.cpp b/be/src/olap/base_tablet.cpp index ea588769342952..468015543bd156 100644 --- a/be/src/olap/base_tablet.cpp +++ b/be/src/olap/base_tablet.cpp @@ -1750,6 +1750,9 @@ void BaseTablet::agg_delete_bitmap_for_stale_rowsets( } int64_t start_version = version.first; int64_t end_version = version.second; + if (start_version == end_version) { + return; + } DCHECK(start_version < end_version) << ". start_version: " << start_version << ", end_version: " << end_version; // get pre rowsets diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index 1cbbb7379e4651..e058363e9e238e 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -868,7 +868,7 @@ void Tablet::delete_expired_stale_rowset() { << " old_meta_size=" << old_meta_size << " sweep endtime " << std::fixed << expired_stale_sweep_endtime << ", reconstructed=" << reconstructed; } - if (!deleted_stale_rowsets.empty()) { + if (config::enable_agg_and_remove_pre_rowsets_delete_bitmap && !deleted_stale_rowsets.empty()) { // agg delete bitmap for pre rowsets; record unused delete bitmap key ranges OlapStopWatch watch; for (const auto& [version, remove_rowset_ids] : deleted_stale_rowsets) {