This is an automated email from the ASF dual-hosted git repository.
zhangchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 29ff7b7964 [fix](merge-on-write) add sentinel mark when do compaction
(#23078)
29ff7b7964 is described below
commit 29ff7b796406353e7a15cbeae724cedd003b019c
Author: bobhan1 <[email protected]>
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 b88f63dd83..be0ebbea91 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 ba8e7445ad..577c9bddb1 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -2993,7 +2993,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) {
@@ -3684,7 +3684,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: [email protected]
For additional commands, e-mail: [email protected]