From 2a15d39a8174602a2fc5cd3e2ff728842d603039 Mon Sep 17 00:00:00 2001 From: airborne12 Date: Wed, 22 Jan 2025 17:51:06 +0800 Subject: [PATCH] [fix](inverted index) Add missing memory usage calculation for BKD index --- .../rowset/segment_v2/inverted_index_reader.cpp | 17 ++++++++--------- .../rowset/segment_v2/inverted_index_reader.h | 3 +-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp b/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp index fced65724e5d05..5fd1223e0fa101 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp +++ b/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp @@ -224,9 +224,10 @@ Status InvertedIndexReader::handle_searcher_cache( // TODO: handle null bitmap procedure in new format. InvertedIndexQueryCacheHandle null_bitmap_cache_handle; static_cast(read_null_bitmap(io_ctx, stats, &null_bitmap_cache_handle, dir.get())); - RETURN_IF_ERROR(create_index_searcher(dir.release(), &searcher, mem_tracker.get(), type())); - auto* cache_value = new InvertedIndexSearcherCache::CacheValue( - std::move(searcher), mem_tracker->consumption(), UnixMillis()); + size_t reader_size = 0; + RETURN_IF_ERROR(create_index_searcher(dir.release(), &searcher, type(), reader_size)); + auto* cache_value = new InvertedIndexSearcherCache::CacheValue(std::move(searcher), + reader_size, UnixMillis()); InvertedIndexSearcherCache::instance()->insert(searcher_cache_key, cache_value, inverted_index_cache_handle); return Status::OK(); @@ -235,9 +236,8 @@ Status InvertedIndexReader::handle_searcher_cache( Status InvertedIndexReader::create_index_searcher(lucene::store::Directory* dir, IndexSearcherPtr* searcher, - MemTracker* mem_tracker, - InvertedIndexReaderType reader_type) { - SCOPED_CONSUME_MEM_TRACKER(mem_tracker); + InvertedIndexReaderType reader_type, + size_t& reader_size) { auto index_searcher_builder = DORIS_TRY(IndexSearcherBuilder::create_index_searcher_builder(reader_type)); @@ -245,12 +245,11 @@ Status InvertedIndexReader::create_index_searcher(lucene::store::Directory* dir, *searcher = searcher_result; // When the meta information has been read, the ioContext needs to be reset to prevent it from being used by other queries. - auto stream = static_cast(dir)->getDorisIndexInput(); + auto* stream = static_cast(dir)->getDorisIndexInput(); stream->setIoContext(nullptr); stream->setIndexFile(false); - // NOTE: before mem_tracker hook becomes active, we caculate reader memory size by hand. - mem_tracker->consume(index_searcher_builder->get_reader_size()); + reader_size = index_searcher_builder->get_reader_size(); return Status::OK(); }; diff --git a/be/src/olap/rowset/segment_v2/inverted_index_reader.h b/be/src/olap/rowset/segment_v2/inverted_index_reader.h index bbd148fae5250d..768e9533ca97db 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_reader.h +++ b/be/src/olap/rowset/segment_v2/inverted_index_reader.h @@ -220,8 +220,7 @@ class InvertedIndexReader : public std::enable_shared_from_this