From afcacc0a13bfa0b6386bd538a3c8edfdf30aa44b Mon Sep 17 00:00:00 2001 From: yixiutt <102007456+yixiutt@users.noreply.github.com> Date: Sun, 11 Dec 2022 18:26:00 +0800 Subject: [PATCH] [bugfix](compaction) fix compaction trigger (#14981) fix bug that when disable_auto_compaction=true but still trigger compaction --- be/src/agent/task_worker_pool.cpp | 28 ++++++++++++--------- be/src/olap/delta_writer.cpp | 3 ++- be/src/vec/olap/vertical_merge_iterator.cpp | 3 ++- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/be/src/agent/task_worker_pool.cpp b/be/src/agent/task_worker_pool.cpp index aa07c6834f..cbf3ffa0ee 100644 --- a/be/src/agent/task_worker_pool.cpp +++ b/be/src/agent/task_worker_pool.cpp @@ -726,19 +726,23 @@ void TaskWorkerPool::_publish_version_worker_thread_callback() { .error(status); finish_task_request.__set_error_tablet_ids(error_tablet_ids); } else { - for (int i = 0; i < succ_tablet_ids.size(); i++) { - TabletSharedPtr tablet = - StorageEngine::instance()->tablet_manager()->get_tablet(succ_tablet_ids[i]); - if (tablet != nullptr) { - tablet->publised_count++; - if (tablet->publised_count % 10 == 0) { - StorageEngine::instance()->submit_compaction_task( - tablet, CompactionType::CUMULATIVE_COMPACTION); - LOG(INFO) << "trigger compaction succ, tabletid:" << succ_tablet_ids[i] - << ", publised:" << tablet->publised_count; + if (!config::disable_auto_compaction) { + for (int i = 0; i < succ_tablet_ids.size(); i++) { + TabletSharedPtr tablet = + StorageEngine::instance()->tablet_manager()->get_tablet( + succ_tablet_ids[i]); + if (tablet != nullptr) { + tablet->publised_count++; + if (tablet->publised_count % 10 == 0) { + StorageEngine::instance()->submit_compaction_task( + tablet, CompactionType::CUMULATIVE_COMPACTION); + LOG(INFO) << "trigger compaction succ, tabletid:" << succ_tablet_ids[i] + << ", publised:" << tablet->publised_count; + } + } else { + LOG(WARNING) + << "trigger compaction failed, tabletid:" << succ_tablet_ids[i]; } - } else { - LOG(WARNING) << "trigger compaction failed, tabletid:" << succ_tablet_ids[i]; } } LOG_INFO("successfully publish version") diff --git a/be/src/olap/delta_writer.cpp b/be/src/olap/delta_writer.cpp index b0f2dc6f30..ad3f884797 100644 --- a/be/src/olap/delta_writer.cpp +++ b/be/src/olap/delta_writer.cpp @@ -111,7 +111,8 @@ Status DeltaWriter::init() { } // check tablet version number - if (_tablet->exceed_version_limit(config::max_tablet_version_num - 100)) { + if (!config::disable_auto_compaction && + _tablet->exceed_version_limit(config::max_tablet_version_num - 100)) { //trigger compaction StorageEngine::instance()->submit_compaction_task(_tablet, CompactionType::CUMULATIVE_COMPACTION); diff --git a/be/src/vec/olap/vertical_merge_iterator.cpp b/be/src/vec/olap/vertical_merge_iterator.cpp index 1dd430b8ca..3a5bf46f62 100644 --- a/be/src/vec/olap/vertical_merge_iterator.cpp +++ b/be/src/vec/olap/vertical_merge_iterator.cpp @@ -281,6 +281,7 @@ Status VerticalMergeIteratorContext::init(const StorageReadOptions& opts) { Status VerticalMergeIteratorContext::advance() { // NOTE: we increase _index_in_block directly to valid one check + _is_same = false; do { _index_in_block++; if (LIKELY(_index_in_block < _block->rows())) { @@ -543,4 +544,4 @@ std::shared_ptr new_vertical_mask_merge_iterator( } } // namespace vectorized -} // namespace doris \ No newline at end of file +} // namespace doris