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

yiguolei 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 352be298ac0 [enhancement](memory) add exception logic in write page 
and schema scanner (#40168)
352be298ac0 is described below

commit 352be298ac048e96cb336ce917f03f1202579d6e
Author: yiguolei <676222...@qq.com>
AuthorDate: Sat Aug 31 15:10:41 2024 +0800

    [enhancement](memory) add exception logic in write page and schema scanner 
(#40168)
    
    ## Proposed changes
    
    Issue Number: close #xxx
    
    <!--Describe your changes.-->
    
    ---------
    
    Co-authored-by: yiguolei <yiguo...@gmail.com>
---
 be/src/exec/schema_scanner.cpp                  | 6 +++++-
 be/src/olap/rowset/segment_v2/column_writer.cpp | 3 ++-
 be/src/olap/rowset/segment_v2/column_writer.h   | 8 +++++++-
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/be/src/exec/schema_scanner.cpp b/be/src/exec/schema_scanner.cpp
index be0bd8eff72..b5cd484b650 100644
--- a/be/src/exec/schema_scanner.cpp
+++ b/be/src/exec/schema_scanner.cpp
@@ -134,7 +134,11 @@ Status SchemaScanner::get_next_block_async(RuntimeState* 
state) {
                     _opened = true;
                 }
                 bool eos = false;
-                
_scanner_status.update(get_next_block_internal(_data_block.get(), &eos));
+                auto call_next_block_internal = [&]() -> Status {
+                    RETURN_IF_CATCH_EXCEPTION(
+                            { return 
get_next_block_internal(_data_block.get(), &eos); });
+                };
+                _scanner_status.update(call_next_block_internal());
                 _eos = eos;
                 _async_thread_running = false;
                 _dependency->set_ready();
diff --git a/be/src/olap/rowset/segment_v2/column_writer.cpp 
b/be/src/olap/rowset/segment_v2/column_writer.cpp
index 75acd9f1f95..2637017b78d 100644
--- a/be/src/olap/rowset/segment_v2/column_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/column_writer.cpp
@@ -534,7 +534,8 @@ Status ScalarColumnWriter::append_data(const uint8_t** ptr, 
size_t num_rows) {
     return Status::OK();
 }
 
-Status ScalarColumnWriter::append_data_in_current_page(const uint8_t* data, 
size_t* num_written) {
+Status ScalarColumnWriter::_internal_append_data_in_current_page(const 
uint8_t* data,
+                                                                 size_t* 
num_written) {
     RETURN_IF_ERROR(_page_builder->add(data, num_written));
     if (_opts.need_zone_map) {
         _zone_map_index_builder->add_values(data, *num_written);
diff --git a/be/src/olap/rowset/segment_v2/column_writer.h 
b/be/src/olap/rowset/segment_v2/column_writer.h
index acda2b75fb2..62f209db5ad 100644
--- a/be/src/olap/rowset/segment_v2/column_writer.h
+++ b/be/src/olap/rowset/segment_v2/column_writer.h
@@ -217,10 +217,16 @@ public:
     // used for append not null data. When page is full, will append data not 
reach num_rows.
     Status append_data_in_current_page(const uint8_t** ptr, size_t* 
num_written);
 
-    Status append_data_in_current_page(const uint8_t* ptr, size_t* 
num_written);
+    Status append_data_in_current_page(const uint8_t* ptr, size_t* 
num_written) {
+        RETURN_IF_CATCH_EXCEPTION(
+                { return _internal_append_data_in_current_page(ptr, 
num_written); });
+    }
     friend class ArrayColumnWriter;
     friend class OffsetColumnWriter;
 
+private:
+    Status _internal_append_data_in_current_page(const uint8_t* ptr, size_t* 
num_written);
+
 private:
     std::unique_ptr<PageBuilder> _page_builder;
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to