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 <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 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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to