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
commit 0bebb848c9807988d2f4238d7f6ff3ef1c740683 Author: bobhan1 <bh2444151...@outlook.com> AuthorDate: Thu Aug 17 20:08:01 2023 +0800 [fix](merge-on-write) add sentinel mark when do compaction (#23078) --- be/src/olap/compaction.cpp | 6 ++++++ be/src/olap/rowset/segment_v2/segment_writer.cpp | 2 +- be/src/olap/tablet.cpp | 4 ++-- be/src/olap/tablet.h | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/be/src/olap/compaction.cpp b/be/src/olap/compaction.cpp index 8f87b2960a..128eb0471e 100644 --- a/be/src/olap/compaction.cpp +++ b/be/src/olap/compaction.cpp @@ -658,6 +658,12 @@ Status Compaction::modify_rowsets(const Merger::Statistics* stats) { _tablet->calc_compaction_output_rowset_delete_bitmap( _input_rowsets, _rowid_conversion, 0, UINT64_MAX, &missed_rows, &location_map, *it.delete_bitmap.get(), &output_delete_bitmap); + if (config::enable_merge_on_write_correctness_check) { + RowsetIdUnorderedSet rowsetids; + rowsetids.insert(_output_rowset->rowset_id()); + _tablet->add_sentinel_mark_to_delete_bitmap(&output_rowset_delete_bitmap, + rowsetids); + } it.delete_bitmap->merge(output_delete_bitmap); // Step3: write back updated delete bitmap and tablet info. it.rowset_ids.insert(_output_rowset->rowset_id()); diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index b717fca5be..270eb98995 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -464,7 +464,7 @@ Status SegmentWriter::append_block_with_partial_content(const vectorized::Block* CHECK(use_default_or_null_flag.size() == num_rows); if (config::enable_merge_on_write_correctness_check) { - _tablet->add_sentinel_mark_to_delete_bitmap(_mow_context->delete_bitmap, + _tablet->add_sentinel_mark_to_delete_bitmap(_mow_context->delete_bitmap.get(), _mow_context->rowset_ids); } diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index c5ec90a866..78c43c80ca 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -2990,7 +2990,7 @@ Status Tablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset, << "[add_sentinel_mark_to_delete_bitmap][end_version:" << end_version << "]" << "add:" << rowset->rowset_id(); } - add_sentinel_mark_to_delete_bitmap(delete_bitmap, rowsetids); + add_sentinel_mark_to_delete_bitmap(delete_bitmap.get(), rowsetids); } if (pos > 0) { @@ -3682,7 +3682,7 @@ Status Tablet::calc_delete_bitmap_between_segments( return Status::OK(); } -void Tablet::add_sentinel_mark_to_delete_bitmap(DeleteBitmapPtr delete_bitmap, +void Tablet::add_sentinel_mark_to_delete_bitmap(DeleteBitmap* delete_bitmap, const RowsetIdUnorderedSet& rowsetids) { for (const auto& rowsetid : rowsetids) { delete_bitmap->add({rowsetid, DeleteBitmap::INVALID_SEGMENT_ID, 0}, diff --git a/be/src/olap/tablet.h b/be/src/olap/tablet.h index d698e9ba3e..a7e4749636 100644 --- a/be/src/olap/tablet.h +++ b/be/src/olap/tablet.h @@ -549,7 +549,7 @@ public: int64_t binlog_max_bytes() const { return _tablet_meta->binlog_config().max_bytes(); } void set_binlog_config(BinlogConfig binlog_config); - void add_sentinel_mark_to_delete_bitmap(DeleteBitmapPtr delete_bitmap, + void add_sentinel_mark_to_delete_bitmap(DeleteBitmap* delete_bitmap, const RowsetIdUnorderedSet& rowsetids); private: --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org