This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 19eb328844e [fix](partial update) report error directly if missing rowsets during doing alignment when flushing memtable due to compaction (#28679) 19eb328844e is described below commit 19eb328844e24ef679ced1d49d53b4f74856aa55 Author: bobhan1 <bh2444151...@outlook.com> AuthorDate: Wed Dec 20 12:07:26 2023 +0800 [fix](partial update) report error directly if missing rowsets during doing alignment when flushing memtable due to compaction (#28679) --- be/src/olap/memtable.cpp | 11 +++++++++++ be/src/olap/rowset/segment_v2/segment_writer.cpp | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index ea3c0fcf6b6..22900abd83e 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -473,6 +473,17 @@ 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<false>( + "[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 7ef33980b5e..c7c6a85dd7a 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -401,6 +401,17 @@ 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()) { + 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<false>( + "[Memtable Flush] some rowsets have been deleted due to compaction"); + } } std::vector<std::unique_ptr<SegmentCacheHandle>> segment_caches(specified_rowsets.size()); // locate rows in base data --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org