This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit b3dab2d88d55dc6382751ef4e1b5f401efb3c854 Author: Kang <kxiao.ti...@gmail.com> AuthorDate: Mon Oct 23 00:50:50 2023 +0800 Revert "[fix](be) Make DorisCallOnce's function exception-safe (#25579)" This reverts commit b8f1f7520723ca489680e94c7f263ccd81cf05a9. --- be/src/olap/rowset/segment_v2/segment.cpp | 34 ++++------------------ be/src/olap/rowset/segment_v2/segment.h | 4 --- be/src/olap/rowset/segment_v2/segment_iterator.cpp | 15 ++-------- be/src/olap/rowset/segment_v2/segment_iterator.h | 2 +- be/src/util/once.h | 3 +- 5 files changed, 10 insertions(+), 48 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp index 5d5a49034c2..991518347c9 100644 --- a/be/src/olap/rowset/segment_v2/segment.cpp +++ b/be/src/olap/rowset/segment_v2/segment.cpp @@ -253,26 +253,12 @@ Status Segment::_load_pk_bloom_filter() { DCHECK(_tablet_schema->keys_type() == UNIQUE_KEYS); DCHECK(_pk_index_meta != nullptr); DCHECK(_pk_index_reader != nullptr); - auto status = [this]() { - return _load_pk_bf_once.call([this] { - RETURN_IF_ERROR(_pk_index_reader->parse_bf(_file_reader, *_pk_index_meta)); - _meta_mem_usage += _pk_index_reader->get_bf_memory_size(); - _segment_meta_mem_tracker->consume(_pk_index_reader->get_bf_memory_size()); - return Status::OK(); - }); - }(); - if (!status.ok()) { - remove_from_segment_cache(); - } - return status; -} - -void Segment::remove_from_segment_cache() const { - if (config::disable_segment_cache) { - return; - } - SegmentCache::CacheKey cache_key(_rowset_id, _segment_id); - SegmentLoader::instance()->erase_segment(cache_key); + return _load_pk_bf_once.call([this] { + RETURN_IF_ERROR(_pk_index_reader->parse_bf(_file_reader, *_pk_index_meta)); + _meta_mem_usage += _pk_index_reader->get_bf_memory_size(); + _segment_meta_mem_tracker->consume(_pk_index_reader->get_bf_memory_size()); + return Status::OK(); + }); } Status Segment::load_pk_index_and_bf() { @@ -281,14 +267,6 @@ Status Segment::load_pk_index_and_bf() { return Status::OK(); } Status Segment::load_index() { - auto status = [this]() { return _load_index_impl(); }(); - if (!status.ok()) { - remove_from_segment_cache(); - } - return status; -} - -Status Segment::_load_index_impl() { return _load_index_once.call([this] { if (_tablet_schema->keys_type() == UNIQUE_KEYS && _pk_index_meta != nullptr) { _pk_index_reader.reset(new PrimaryKeyIndexReader()); diff --git a/be/src/olap/rowset/segment_v2/segment.h b/be/src/olap/rowset/segment_v2/segment.h index 34b41843aa1..38f5a4acbf7 100644 --- a/be/src/olap/rowset/segment_v2/segment.h +++ b/be/src/olap/rowset/segment_v2/segment.h @@ -129,8 +129,6 @@ public: int64_t meta_mem_usage() const { return _meta_mem_usage; } - void remove_from_segment_cache() const; - private: DISALLOW_COPY_AND_ASSIGN(Segment); Segment(uint32_t segment_id, RowsetId rowset_id, TabletSchemaSPtr tablet_schema); @@ -140,8 +138,6 @@ private: Status _create_column_readers(const SegmentFooterPB& footer); Status _load_pk_bloom_filter(); - Status _load_index_impl(); - private: friend class SegmentIterator; io::FileReaderSPtr _file_reader; diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index 9cc94adf47f..548de6a15dd 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -212,14 +212,6 @@ SegmentIterator::SegmentIterator(std::shared_ptr<Segment> segment, SchemaSPtr sc _pool(new ObjectPool) {} Status SegmentIterator::init(const StorageReadOptions& opts) { - auto status = _init_impl(opts); - if (!status.ok() && !config::disable_segment_cache) { - _segment->remove_from_segment_cache(); - } - return status; -} - -Status SegmentIterator::_init_impl(const StorageReadOptions& opts) { // get file handle from file descriptor of segment if (_inited) { return Status::OK(); @@ -1779,11 +1771,8 @@ Status SegmentIterator::_read_columns_by_rowids(std::vector<ColumnId>& read_colu } Status SegmentIterator::next_batch(vectorized::Block* block) { - auto status = [&]() { RETURN_IF_CATCH_EXCEPTION({ return _next_batch_internal(block); }); }(); - if (!status.ok()) { - _segment->remove_from_segment_cache(); - } - return status; + RETURN_IF_CATCH_EXCEPTION({ return _next_batch_internal(block); }); + return Status::OK(); } Status SegmentIterator::_next_batch_internal(vectorized::Block* block) { diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.h b/be/src/olap/rowset/segment_v2/segment_iterator.h index d53ad9d62b0..a44d0b6ebae 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.h +++ b/be/src/olap/rowset/segment_v2/segment_iterator.h @@ -152,7 +152,7 @@ private: } [[nodiscard]] Status _lazy_init(); - [[nodiscard]] Status _init_impl(const StorageReadOptions& opts); + [[nodiscard]] Status _init_return_column_iterators(); [[nodiscard]] Status _init_bitmap_index_iterators(); [[nodiscard]] Status _init_inverted_index_iterators(); diff --git a/be/src/util/once.h b/be/src/util/once.h index 371fb7daea6..7753dc18b23 100644 --- a/be/src/util/once.h +++ b/be/src/util/once.h @@ -22,7 +22,6 @@ #include <atomic> -#include "common/exception.h" #include "olap/olap_common.h" #include "util/lock.h" @@ -61,7 +60,7 @@ public: std::lock_guard l(_mutex); if (_has_called.load(std::memory_order_acquire)) break; - _status = [&]() { RETURN_IF_CATCH_EXCEPTION({ return fn(); }); }(); + _status = fn(); _has_called.store(true, std::memory_order_release); } while (false); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org