diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 22900abd83e073..ea3c0fcf6b6bf3 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -473,17 +473,6 @@ Status MemTable::_generate_delete_bitmap(int32_t segment_id) { { std::shared_lock meta_rlock(_tablet->get_header_lock()); specified_rowsets = _tablet->get_rowset_by_ids(&_mow_context->rowset_ids); - if (specified_rowsets.size() != _mow_context->rowset_ids.size()) { - LOG(WARNING) << fmt::format( - "[Memtable Flush] some rowsets have been deleted due to " - "compaction(specified_rowsets.size()={}, but rowset_ids.size()={}), reset " - "rowset_ids to the latest value. tablet_id: {}, cur max_version: {}, " - "transaction_id: {}", - specified_rowsets.size(), _mow_context->rowset_ids.size(), _tablet->tablet_id(), - _mow_context->max_version, _mow_context->txn_id); - return Status::InternalError( - "[Memtable Flush] some rowsets have been deleted due to compaction"); - } } OlapStopWatch watch; RETURN_IF_ERROR(_tablet->calc_delete_bitmap(rowset, segments, specified_rowsets, diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index c7c6a85dd7a379..02ea943818d812 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -401,16 +401,19 @@ Status SegmentWriter::append_block_with_partial_content(const vectorized::Block* { std::shared_lock rlock(_tablet->get_header_lock()); specified_rowsets = _tablet->get_rowset_by_ids(&_mow_context->rowset_ids); - if (specified_rowsets.size() != _mow_context->rowset_ids.size()) { + if (_opts.rowset_ctx->partial_update_info->is_strict_mode && + specified_rowsets.size() != _mow_context->rowset_ids.size()) { + // Only when this is a strict mode partial update that missing rowsets here will lead to problems. + // In other case, the missing rowsets will be calculated in later phases(commit phase/publish phase) LOG(WARNING) << fmt::format( "[Memtable Flush] some rowsets have been deleted due to " - "compaction(specified_rowsets.size()={}, but rowset_ids.size()={}), reset " - "rowset_ids to the latest value. tablet_id: {}, cur max_version: {}, " - "transaction_id: {}", + "compaction(specified_rowsets.size()={}, but rowset_ids.size()={}) in strict " + "mode partial update. tablet_id: {}, cur max_version: {}, transaction_id: {}", specified_rowsets.size(), _mow_context->rowset_ids.size(), _tablet->tablet_id(), _mow_context->max_version, _mow_context->txn_id); return Status::InternalError( - "[Memtable Flush] some rowsets have been deleted due to compaction"); + "[Memtable Flush] some rowsets have been deleted due to " + "compaction in strict mode partial update"); } } std::vector> segment_caches(specified_rowsets.size());