From 45c33b555a3e5807db7654a7ea763b389856c0c2 Mon Sep 17 00:00:00 2001 From: yiguolei Date: Mon, 26 Aug 2024 15:26:03 +0800 Subject: [PATCH 1/3] [enhancement](memory) add exception handle logic in memtable flush --- be/src/olap/memtable.cpp | 6 +++++- be/src/olap/memtable.h | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 207778becae4d6..153bec5a0645ba 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -505,7 +505,7 @@ bool MemTable::need_agg() const { return false; } -Status MemTable::to_block(std::unique_ptr* res) { +Status MemTable::_to_block(std::unique_ptr* res) { size_t same_keys_num = _sort(); if (_keys_type == KeysType::DUP_KEYS || same_keys_num == 0) { if (_keys_type == KeysType::DUP_KEYS && _tablet_schema->num_key_columns() == 0) { @@ -529,4 +529,8 @@ Status MemTable::to_block(std::unique_ptr* res) { return Status::OK(); } +Status MemTable::to_block(std::unique_ptr* res) { + RETURN_IF_CATCH_EXCEPTION(_to_block(res)); +} + } // namespace doris diff --git a/be/src/olap/memtable.h b/be/src/olap/memtable.h index 916067ba1193d2..70f7a9f22a0aa8 100644 --- a/be/src/olap/memtable.h +++ b/be/src/olap/memtable.h @@ -205,6 +205,9 @@ class MemTable { void _aggregate_two_row_in_block(vectorized::MutableBlock& mutable_block, RowInBlock* new_row, RowInBlock* row_in_skiplist); + // Used to wrapped by to_block to do exception handle logic + Status _to_block(std::unique_ptr* res); + private: int64_t _tablet_id; bool _enable_unique_key_mow = false; From ad70dd41ceff8946852d131bba3164fee66b1f2d Mon Sep 17 00:00:00 2001 From: yiguolei Date: Mon, 26 Aug 2024 20:55:54 +0800 Subject: [PATCH 2/3] f --- be/src/olap/memtable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 153bec5a0645ba..5f4629688b8468 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -530,7 +530,7 @@ Status MemTable::_to_block(std::unique_ptr* res) { } Status MemTable::to_block(std::unique_ptr* res) { - RETURN_IF_CATCH_EXCEPTION(_to_block(res)); + RETURN_IF_ERROR_OR_CATCH_EXCEPTION(_to_block(res)); } } // namespace doris From 00852fc06bc133420ed3fdc1f5605b8d51e24516 Mon Sep 17 00:00:00 2001 From: yiguolei Date: Mon, 26 Aug 2024 23:23:21 +0800 Subject: [PATCH 3/3] f --- be/src/olap/memtable.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp index 5f4629688b8468..6476012fde601d 100644 --- a/be/src/olap/memtable.cpp +++ b/be/src/olap/memtable.cpp @@ -531,6 +531,7 @@ Status MemTable::_to_block(std::unique_ptr* res) { Status MemTable::to_block(std::unique_ptr* res) { RETURN_IF_ERROR_OR_CATCH_EXCEPTION(_to_block(res)); + return Status::OK(); } } // namespace doris