This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 38838ace169 branch-3.1: [fix](mow) remove
enable_delete_bitmap_merge_on_compaction #51479 (#52262)
38838ace169 is described below
commit 38838ace1692f1a62dba6a0ab077aa9b3b324a1a
Author: meiyi <[email protected]>
AuthorDate: Thu Jun 26 14:12:11 2025 +0800
branch-3.1: [fix](mow) remove enable_delete_bitmap_merge_on_compaction
#51479 (#52262)
Cherry pick from #51479
---
be/src/cloud/cloud_cumulative_compaction.cpp | 71 ---------------------
be/src/cloud/cloud_cumulative_compaction.h | 2 -
be/src/cloud/cloud_meta_mgr.cpp | 18 ------
be/src/cloud/cloud_meta_mgr.h | 4 --
be/src/cloud/cloud_tablet.cpp | 3 -
be/src/common/config.cpp | 2 -
be/src/common/config.h | 2 -
be/src/olap/tablet_meta.cpp | 48 --------------
be/src/olap/tablet_meta.h | 10 ---
...compaction_remove_old_version_delete_bitmap.out | Bin 571 -> 0 bytes
.../test_mow_compaction_and_schema_change.out | Bin 720 -> 505 bytes
...paction_agg_and_remove_pre_delete_bitmap.groovy | 3 -
.../test_mow_compaction_and_schema_change.groovy | 11 +---
13 files changed, 1 insertion(+), 173 deletions(-)
diff --git a/be/src/cloud/cloud_cumulative_compaction.cpp
b/be/src/cloud/cloud_cumulative_compaction.cpp
index ec23f59a4b5..e7a5fb1ce2a 100644
--- a/be/src/cloud/cloud_cumulative_compaction.cpp
+++ b/be/src/cloud/cloud_cumulative_compaction.cpp
@@ -392,11 +392,6 @@ Status CloudCumulativeCompaction::modify_rowsets() {
stats.num_rows(),
stats.data_size());
}
}
- if (config::enable_delete_bitmap_merge_on_compaction &&
- _tablet->keys_type() == KeysType::UNIQUE_KEYS &&
- _tablet->enable_unique_key_merge_on_write() && _input_rowsets.size()
!= 1) {
- RETURN_IF_ERROR(process_old_version_delete_bitmap());
- }
// agg delete bitmap for pre rowsets
if (config::enable_agg_and_remove_pre_rowsets_delete_bitmap &&
_tablet->keys_type() == KeysType::UNIQUE_KEYS &&
@@ -443,72 +438,6 @@ Status CloudCumulativeCompaction::modify_rowsets() {
return Status::OK();
}
-Status CloudCumulativeCompaction::process_old_version_delete_bitmap() {
- // agg previously rowset old version delete bitmap
- std::vector<RowsetSharedPtr> pre_rowsets {};
- std::vector<std::string> pre_rowset_ids {};
- for (const auto& it : cloud_tablet()->rowset_map()) {
- if (it.first.second < _input_rowsets.front()->start_version()) {
- pre_rowsets.emplace_back(it.second);
- pre_rowset_ids.emplace_back(it.second->rowset_id().to_string());
- }
- }
- std::sort(pre_rowsets.begin(), pre_rowsets.end(), Rowset::comparator);
- if (!pre_rowsets.empty()) {
- auto pre_max_version = _output_rowset->version().second;
- DeleteBitmapPtr new_delete_bitmap =
-
std::make_shared<DeleteBitmap>(_tablet->tablet_meta()->tablet_id());
- std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey,
DeleteBitmap::BitmapKey>>
- to_remove_vec;
- for (auto& rowset : pre_rowsets) {
- if (rowset->rowset_meta()->total_disk_size() == 0) {
- continue;
- }
- for (uint32_t seg_id = 0; seg_id < rowset->num_segments();
++seg_id) {
- rowset->rowset_id().to_string();
- DeleteBitmap::BitmapKey start {rowset->rowset_id(), seg_id, 0};
- DeleteBitmap::BitmapKey end {rowset->rowset_id(), seg_id,
pre_max_version};
- auto d = _tablet->tablet_meta()->delete_bitmap().get_agg(
- {rowset->rowset_id(), seg_id, pre_max_version});
-
to_remove_vec.emplace_back(std::make_tuple(_tablet->tablet_id(), start, end));
- if (d->isEmpty()) {
- continue;
- }
- new_delete_bitmap->set(end, *d);
- }
- }
- if (!new_delete_bitmap->empty()) {
- // store agg delete bitmap
-
DBUG_EXECUTE_IF("CloudCumulativeCompaction.modify_rowsets.update_delete_bitmap_failed",
- {
- return Status::InternalError(
- "test fail to update delete bitmap for
tablet_id {}",
- cloud_tablet()->tablet_id());
- });
- std::map<std::string, int64_t> rowset_to_versions;
-
RETURN_IF_ERROR(_engine.meta_mgr().cloud_update_delete_bitmap_without_lock(
- *cloud_tablet(), new_delete_bitmap.get(),
rowset_to_versions));
-
- Version version(_input_rowsets.front()->start_version(),
- _input_rowsets.back()->end_version());
- for (auto it = new_delete_bitmap->delete_bitmap.begin();
- it != new_delete_bitmap->delete_bitmap.end(); it++) {
- _tablet->tablet_meta()->delete_bitmap().set(it->first,
it->second);
- }
-
_tablet->tablet_meta()->delete_bitmap().add_to_remove_queue(version.to_string(),
-
to_remove_vec);
- DBUG_EXECUTE_IF(
-
"CloudCumulativeCompaction.modify_rowsets.delete_expired_stale_rowsets",
- {
static_cast<CloudTablet*>(_tablet.get())->delete_expired_stale_rowsets(); });
- }
- }
-
DBUG_EXECUTE_IF("CumulativeCompaction.modify_rowsets.delete_expired_stale_rowset",
{
- LOG(INFO) << "delete_expired_stale_rowsets for tablet=" <<
_tablet->tablet_id();
- _engine.tablet_mgr().vacuum_stale_rowsets(CountDownLatch(1));
- });
- return Status::OK();
-}
-
Status CloudCumulativeCompaction::garbage_collection() {
RETURN_IF_ERROR(CloudCompactionMixin::garbage_collection());
cloud::TabletJobInfoPB job;
diff --git a/be/src/cloud/cloud_cumulative_compaction.h
b/be/src/cloud/cloud_cumulative_compaction.h
index ba3b768a24f..e139054bbc7 100644
--- a/be/src/cloud/cloud_cumulative_compaction.h
+++ b/be/src/cloud/cloud_cumulative_compaction.h
@@ -52,8 +52,6 @@ private:
void update_cumulative_point();
- Status process_old_version_delete_bitmap();
-
ReaderType compaction_type() const override { return
ReaderType::READER_CUMULATIVE_COMPACTION; }
int64_t _input_segments = 0;
diff --git a/be/src/cloud/cloud_meta_mgr.cpp b/be/src/cloud/cloud_meta_mgr.cpp
index 62c68b5379f..ca179144310 100644
--- a/be/src/cloud/cloud_meta_mgr.cpp
+++ b/be/src/cloud/cloud_meta_mgr.cpp
@@ -1465,24 +1465,6 @@ void
CloudMetaMgr::remove_delete_bitmap_update_lock(int64_t table_id, int64_t lo
}
}
-Status CloudMetaMgr::remove_old_version_delete_bitmap(
- int64_t tablet_id,
- const std::vector<std::tuple<std::string, uint64_t, uint64_t>>&
to_delete) {
- LOG(INFO) << "remove_old_version_delete_bitmap , tablet_id: " << tablet_id;
- RemoveDeleteBitmapRequest req;
- RemoveDeleteBitmapResponse res;
- req.set_cloud_unique_id(config::cloud_unique_id);
- req.set_tablet_id(tablet_id);
- for (auto& value : to_delete) {
- req.add_rowset_ids(std::get<0>(value));
- req.add_begin_versions(std::get<1>(value));
- req.add_end_versions(std::get<2>(value));
- }
- auto st = retry_rpc("remove old delete bitmap", req, &res,
- &MetaService_Stub::remove_delete_bitmap);
- return st;
-}
-
void CloudMetaMgr::check_table_size_correctness(const RowsetMeta& rs_meta) {
if (!config::enable_table_size_correctness_check) {
return;
diff --git a/be/src/cloud/cloud_meta_mgr.h b/be/src/cloud/cloud_meta_mgr.h
index dac01eb4e5f..99f409ed6dd 100644
--- a/be/src/cloud/cloud_meta_mgr.h
+++ b/be/src/cloud/cloud_meta_mgr.h
@@ -118,10 +118,6 @@ public:
void remove_delete_bitmap_update_lock(int64_t table_id, int64_t lock_id,
int64_t initiator,
int64_t tablet_id);
- Status remove_old_version_delete_bitmap(
- int64_t tablet_id,
- const std::vector<std::tuple<std::string, uint64_t, uint64_t>>&
to_delete);
-
private:
bool sync_tablet_delete_bitmap_by_cache(CloudTablet* tablet, int64_t
old_max_version,
std::ranges::range auto&& rs_metas,
diff --git a/be/src/cloud/cloud_tablet.cpp b/be/src/cloud/cloud_tablet.cpp
index 4b430cca13a..8151560599d 100644
--- a/be/src/cloud/cloud_tablet.cpp
+++ b/be/src/cloud/cloud_tablet.cpp
@@ -415,7 +415,6 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() {
std::vector<std::pair<Version, std::vector<RowsetSharedPtr>>>
deleted_stale_rowsets;
int64_t expired_stale_sweep_endtime =
::time(nullptr) - config::tablet_rowset_stale_sweep_time_sec;
- std::vector<std::string> version_to_delete;
{
std::unique_lock wlock(_meta_lock);
@@ -456,14 +455,12 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() {
_tablet_meta->delete_stale_rs_meta_by_version(v_ts->version());
}
Version version(start_version, end_version);
- version_to_delete.emplace_back(version.to_string());
if (!stale_rowsets.empty()) {
deleted_stale_rowsets.emplace_back(version,
std::move(stale_rowsets));
}
}
_reconstruct_version_tracker_if_necessary();
}
-
_tablet_meta->delete_bitmap().remove_stale_delete_bitmap_from_queue(version_to_delete);
recycle_cached_data(expired_rowsets);
if (config::enable_mow_verbose_log) {
LOG_INFO("finish delete_expired_stale_rowset for tablet={}",
tablet_id());
diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp
index 59da5fc908a..1768f315304 100644
--- a/be/src/common/config.cpp
+++ b/be/src/common/config.cpp
@@ -1488,8 +1488,6 @@ DEFINE_mBool(enable_pipeline_task_leakage_detect,
"false");
DEFINE_Int32(query_cache_size, "512");
-DEFINE_mBool(enable_delete_bitmap_merge_on_compaction, "false");
-
// Enable validation to check the correctness of table size.
DEFINE_Bool(enable_table_size_correctness_check, "false");
DEFINE_Bool(force_regenerate_rowsetid_on_start_error, "false");
diff --git a/be/src/common/config.h b/be/src/common/config.h
index 1a5bb9aacea..98186d5726a 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -1559,8 +1559,6 @@ DECLARE_mBool(enable_pipeline_task_leakage_detect);
DECLARE_Int32(query_cache_size);
DECLARE_Bool(force_regenerate_rowsetid_on_start_error);
-DECLARE_mBool(enable_delete_bitmap_merge_on_compaction);
-
// Enable validation to check the correctness of table size.
DECLARE_Bool(enable_table_size_correctness_check);
// Enable sleep 5s between delete cumulative compaction.
diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index ba20216e0c3..db8bd9aaee9 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -1305,54 +1305,6 @@ void DeleteBitmap::merge(const DeleteBitmap& other) {
}
}
-void DeleteBitmap::add_to_remove_queue(
- const std::string& version_str,
- const std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey,
DeleteBitmap::BitmapKey>>&
- vector) {
- std::shared_lock l(stale_delete_bitmap_lock);
- _stale_delete_bitmap.emplace(version_str, vector);
-}
-
-void DeleteBitmap::remove_stale_delete_bitmap_from_queue(const
std::vector<std::string>& vector) {
- if (!config::enable_delete_bitmap_merge_on_compaction) {
- return;
- }
- std::shared_lock l(stale_delete_bitmap_lock);
- //<rowset_id, start_version, end_version>
- std::vector<std::tuple<std::string, uint64_t, uint64_t>> to_delete;
- int64_t tablet_id = -1;
- for (auto& version_str : vector) {
- auto it = _stale_delete_bitmap.find(version_str);
- if (it != _stale_delete_bitmap.end()) {
- auto delete_bitmap_vector = it->second;
- for (auto& delete_bitmap_tuple : it->second) {
- if (tablet_id < 0) {
- tablet_id = std::get<0>(delete_bitmap_tuple);
- }
- auto start_bmk = std::get<1>(delete_bitmap_tuple);
- auto end_bmk = std::get<2>(delete_bitmap_tuple);
- // the key range of to be removed is [start_bmk,end_bmk),
- // due to the different definitions of the right boundary,
- // so use end_bmk as right boundary when removing local delete
bitmap,
- // use (end_bmk - 1) as right boundary when removing ms delete
bitmap
- remove(start_bmk, end_bmk);
-
to_delete.emplace_back(std::make_tuple(std::get<0>(start_bmk).to_string(), 0,
- std::get<2>(end_bmk) -
1));
- }
- _stale_delete_bitmap.erase(version_str);
- }
- }
- if (tablet_id == -1 || to_delete.empty()) {
- return;
- }
- CloudStorageEngine& engine =
ExecEnv::GetInstance()->storage_engine().to_cloud();
- auto st = engine.meta_mgr().remove_old_version_delete_bitmap(tablet_id,
to_delete);
- if (!st.ok()) {
- LOG(WARNING) << "fail to remove_stale_delete_bitmap_from_queue for
tablet=" << tablet_id
- << ",st=" << st;
- }
-}
-
uint64_t DeleteBitmap::get_delete_bitmap_count() {
std::shared_lock l(lock);
uint64_t count = 0;
diff --git a/be/src/olap/tablet_meta.h b/be/src/olap/tablet_meta.h
index 9d765aa1c7f..4df84c56255 100644
--- a/be/src/olap/tablet_meta.h
+++ b/be/src/olap/tablet_meta.h
@@ -385,7 +385,6 @@ private:
class DeleteBitmap {
public:
mutable std::shared_mutex lock;
- mutable std::shared_mutex stale_delete_bitmap_lock;
using SegmentId = uint32_t;
using Version = uint64_t;
using BitmapKey = std::tuple<RowsetId, SegmentId, Version>;
@@ -552,11 +551,6 @@ public:
void remove_sentinel_marks();
- void add_to_remove_queue(const std::string& version_str,
- const std::vector<std::tuple<int64_t,
DeleteBitmap::BitmapKey,
-
DeleteBitmap::BitmapKey>>& vector);
- void remove_stale_delete_bitmap_from_queue(const std::vector<std::string>&
vector);
-
uint64_t get_delete_bitmap_count();
void traverse_rowset_and_version(
@@ -608,10 +602,6 @@ private:
int64_t _tablet_id;
mutable std::shared_mutex _rowset_cache_version_lock;
mutable std::map<RowsetId, std::map<SegmentId, Version>>
_rowset_cache_version;
- // <version, <tablet_id, BitmapKeyStart, BitmapKeyEnd>>
- std::map<std::string,
- std::vector<std::tuple<int64_t, DeleteBitmap::BitmapKey,
DeleteBitmap::BitmapKey>>>
- _stale_delete_bitmap;
};
static const std::string SEQUENCE_COL = "__DORIS_SEQUENCE_COL__";
diff --git
a/regression-test/data/compaction/test_cu_compaction_remove_old_version_delete_bitmap.out
b/regression-test/data/compaction/test_cu_compaction_remove_old_version_delete_bitmap.out
deleted file mode 100644
index 37dfa3b93a5..00000000000
Binary files
a/regression-test/data/compaction/test_cu_compaction_remove_old_version_delete_bitmap.out
and /dev/null differ
diff --git
a/regression-test/data/compaction/test_mow_compaction_and_schema_change.out
b/regression-test/data/compaction/test_mow_compaction_and_schema_change.out
index 43ba92316ae..e912c295a2b 100644
Binary files
a/regression-test/data/compaction/test_mow_compaction_and_schema_change.out and
b/regression-test/data/compaction/test_mow_compaction_and_schema_change.out
differ
diff --git
a/regression-test/suites/compaction/test_mow_compaction_agg_and_remove_pre_delete_bitmap.groovy
b/regression-test/suites/compaction/test_mow_compaction_agg_and_remove_pre_delete_bitmap.groovy
index 73942a55f80..27fbb97ac01 100644
---
a/regression-test/suites/compaction/test_mow_compaction_agg_and_remove_pre_delete_bitmap.groovy
+++
b/regression-test/suites/compaction/test_mow_compaction_agg_and_remove_pre_delete_bitmap.groovy
@@ -155,13 +155,11 @@
suite("test_mow_compaction_agg_and_remove_pre_delete_bitmap", "nonConcurrent") {
GetDebugPoint().clearDebugPointsForAllBEs()
get_be_param("tablet_rowset_stale_sweep_time_sec")
get_be_param("compaction_promotion_version_count")
- get_be_param("enable_delete_bitmap_merge_on_compaction")
get_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap")
try {
set_be_param("tablet_rowset_stale_sweep_time_sec", "0")
set_be_param("compaction_promotion_version_count", "5")
- set_be_param("enable_delete_bitmap_merge_on_compaction", "false") //
solution 1
set_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap",
"true") // solution 2
def testTable = "test_mow_compaction"
@@ -251,7 +249,6 @@
suite("test_mow_compaction_agg_and_remove_pre_delete_bitmap", "nonConcurrent") {
} finally {
reset_be_param("tablet_rowset_stale_sweep_time_sec")
reset_be_param("compaction_promotion_version_count")
- reset_be_param("enable_delete_bitmap_merge_on_compaction")
reset_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap")
GetDebugPoint().clearDebugPointsForAllBEs()
}
diff --git
a/regression-test/suites/compaction/test_mow_compaction_and_schema_change.groovy
b/regression-test/suites/compaction/test_mow_compaction_and_schema_change.groovy
index 942df3d9e24..8328980817e 100644
---
a/regression-test/suites/compaction/test_mow_compaction_and_schema_change.groovy
+++
b/regression-test/suites/compaction/test_mow_compaction_and_schema_change.groovy
@@ -174,24 +174,17 @@ suite("test_mow_compaction_and_schema_change",
"nonConcurrent") {
GetDebugPoint().clearDebugPointsForAllBEs()
get_be_param("tablet_rowset_stale_sweep_time_sec")
- get_be_param("enable_delete_bitmap_merge_on_compaction")
get_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap")
try {
set_be_param("tablet_rowset_stale_sweep_time_sec", "0")
- for (int method = 0; method < 3; method++) {
+ for (int method = 0; method < 2; method++) {
if (method == 0) {
// off
- set_be_param("enable_delete_bitmap_merge_on_compaction",
"false")
set_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap", "false")
} else if (method == 1) {
// solution2: no duplicated key problems
- set_be_param("enable_delete_bitmap_merge_on_compaction",
"false")
set_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap", "true")
- } else if (method == 2) {
- // solution1: has duplicated key problems
- set_be_param("enable_delete_bitmap_merge_on_compaction",
"true")
-
set_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap", "false")
}
testTable = "test_mow_compaction_and_schema_change_${method}"
@@ -231,7 +224,6 @@ suite("test_mow_compaction_and_schema_change",
"nonConcurrent") {
order_qt_sql2 "select * from ${testTable}"
GetDebugPoint().enableDebugPointForAllBEs("Tablet.delete_expired_stale_rowset.start_delete_unused_rowset")
-
GetDebugPoint().enableDebugPointForAllBEs("CumulativeCompaction.modify_rowsets.delete_expired_stale_rowsets")
// solution 1
GetDebugPoint().enableDebugPointForAllBEs("CumulativeCompaction.modify_rowsets.delete_expired_stale_rowset")
// solution 2
// 3.0 write some data
@@ -338,7 +330,6 @@ suite("test_mow_compaction_and_schema_change",
"nonConcurrent") {
}
} finally {
reset_be_param("tablet_rowset_stale_sweep_time_sec")
- reset_be_param("enable_delete_bitmap_merge_on_compaction")
reset_be_param("enable_agg_and_remove_pre_rowsets_delete_bitmap")
GetDebugPoint().clearDebugPointsForAllBEs()
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]