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