This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
     new 7a6bc9eb7f [bugfix](merger) traverse rs_meta in lock (#17317)
7a6bc9eb7f is described below

commit 7a6bc9eb7f692ed0d868a2717322a2709aed634b
Author: yixiutt <[email protected]>
AuthorDate: Thu Mar 2 15:40:36 2023 +0800

    [bugfix](merger) traverse rs_meta in lock (#17317)
---
 be/src/olap/merger.cpp | 42 ++++++++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/be/src/olap/merger.cpp b/be/src/olap/merger.cpp
index ded6060b3d..532e74170d 100644
--- a/be/src/olap/merger.cpp
+++ b/be/src/olap/merger.cpp
@@ -43,19 +43,22 @@ Status Merger::merge_rowsets(TabletSharedPtr tablet, 
ReaderType reader_type,
     reader_params.reader_type = reader_type;
     reader_params.rs_readers = src_rowset_readers;
     reader_params.version = dst_rowset_writer->version();
+
+    TabletSchemaSPtr merge_tablet_schema = std::make_shared<TabletSchema>();
+    merge_tablet_schema->copy_from(*cur_tablet_schema);
     {
         std::shared_lock rdlock(tablet->get_header_lock());
         auto delete_preds = tablet->delete_predicates();
         std::copy(delete_preds.cbegin(), delete_preds.cend(),
                   std::inserter(reader_params.delete_predicates,
                                 reader_params.delete_predicates.begin()));
+        // Merge the columns in delete predicate that not in latest schema in 
to current tablet schema
+        for (auto& del_pred_rs : reader_params.delete_predicates) {
+            merge_tablet_schema->merge_dropped_columns(
+                    tablet->tablet_schema(del_pred_rs->version()));
+        }
     }
-    TabletSchemaSPtr merge_tablet_schema = std::make_shared<TabletSchema>();
-    merge_tablet_schema->copy_from(*cur_tablet_schema);
-    // Merge the columns in delete predicate that not in latest schema in to 
current tablet schema
-    for (auto& del_pred_rs : reader_params.delete_predicates) {
-        
merge_tablet_schema->merge_dropped_columns(tablet->tablet_schema(del_pred_rs->version()));
-    }
+
     reader_params.tablet_schema = merge_tablet_schema;
     RETURN_NOT_OK(reader.init(reader_params));
 
@@ -120,18 +123,19 @@ Status Merger::vmerge_rowsets(TabletSharedPtr tablet, 
ReaderType reader_type,
     reader_params.reader_type = reader_type;
     reader_params.rs_readers = src_rowset_readers;
     reader_params.version = dst_rowset_writer->version();
+
+    TabletSchemaSPtr merge_tablet_schema = std::make_shared<TabletSchema>();
+    merge_tablet_schema->copy_from(*cur_tablet_schema);
     {
         std::shared_lock rdlock(tablet->get_header_lock());
         auto delete_preds = tablet->delete_predicates();
         std::copy(delete_preds.cbegin(), delete_preds.cend(),
                   std::inserter(reader_params.delete_predicates,
                                 reader_params.delete_predicates.begin()));
-    }
-    TabletSchemaSPtr merge_tablet_schema = std::make_shared<TabletSchema>();
-    merge_tablet_schema->copy_from(*cur_tablet_schema);
-    // Merge the columns in delete predicate that not in latest schema in to 
current tablet schema
-    for (auto& del_pred_rs : reader_params.delete_predicates) {
-        
merge_tablet_schema->merge_dropped_columns(tablet->tablet_schema(del_pred_rs->version()));
+        for (auto& del_pred_rs : reader_params.delete_predicates) {
+            merge_tablet_schema->merge_dropped_columns(
+                    tablet->tablet_schema(del_pred_rs->version()));
+        }
     }
     reader_params.tablet_schema = merge_tablet_schema;
 
@@ -249,18 +253,20 @@ Status Merger::vertical_compact_one_group(
     reader_params.reader_type = reader_type;
     reader_params.rs_readers = src_rowset_readers;
     reader_params.version = dst_rowset_writer->version();
+
+    TabletSchemaSPtr merge_tablet_schema = std::make_shared<TabletSchema>();
+    merge_tablet_schema->copy_from(*tablet_schema);
     {
         std::shared_lock rdlock(tablet->get_header_lock());
         auto delete_preds = tablet->delete_predicates();
         std::copy(delete_preds.cbegin(), delete_preds.cend(),
                   std::inserter(reader_params.delete_predicates,
                                 reader_params.delete_predicates.begin()));
-    }
-    TabletSchemaSPtr merge_tablet_schema = std::make_shared<TabletSchema>();
-    merge_tablet_schema->copy_from(*tablet_schema);
-    // Merge the columns in delete predicate that not in latest schema in to 
current tablet schema
-    for (auto& del_pred_rs : reader_params.delete_predicates) {
-        
merge_tablet_schema->merge_dropped_columns(tablet->tablet_schema(del_pred_rs->version()));
+        // Merge the columns in delete predicate that not in latest schema in 
to current tablet schema
+        for (auto& del_pred_rs : reader_params.delete_predicates) {
+            merge_tablet_schema->merge_dropped_columns(
+                    tablet->tablet_schema(del_pred_rs->version()));
+        }
     }
     reader_params.tablet_schema = merge_tablet_schema;
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to