diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp index ae525eed35..c79ce05cb9 100644 --- a/be/src/olap/rowset/beta_rowset_writer.cpp +++ b/be/src/olap/rowset/beta_rowset_writer.cpp @@ -354,7 +354,8 @@ bool BetaRowsetWriter::_check_and_set_is_doing_segcompaction() { Status BetaRowsetWriter::_segcompaction_if_necessary() { Status status = Status::OK(); - if (!config::enable_segcompaction || !_check_and_set_is_doing_segcompaction()) { + if (!config::enable_segcompaction || !_context.enable_segcompaction || + !_check_and_set_is_doing_segcompaction()) { return status; } if (_segcompaction_status.load() != OK) { diff --git a/be/src/olap/rowset/rowset_writer_context.h b/be/src/olap/rowset/rowset_writer_context.h index cb78a1233a..a5bb0d8e60 100644 --- a/be/src/olap/rowset/rowset_writer_context.h +++ b/be/src/olap/rowset/rowset_writer_context.h @@ -96,6 +96,9 @@ struct RowsetWriterContext { std::shared_ptr mow_context; std::shared_ptr file_writer_creator; std::shared_ptr segment_collector; + + // segcompaction for this RowsetWriter, disable it for some transient writers + bool enable_segcompaction = true; }; } // namespace doris diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index 3daf025bd6..6af6b6aff1 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -1983,6 +1983,7 @@ Status Tablet::create_transient_rowset_writer(RowsetSharedPtr rowset_ptr, context.tablet_schema->set_partial_update_info(false, std::set()); context.newest_write_timestamp = UnixSeconds(); context.tablet_id = table_id(); + context.enable_segcompaction = false; // ATTN: context.tablet is a shared_ptr, can't simply set it's value to `this`. We should // get the shared_ptr from tablet_manager. context.tablet = StorageEngine::instance()->tablet_manager()->get_tablet(tablet_id());