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

Reply via email to