This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 921fab2196644115b81bf812f91bad5470088655 Author: Xinyi Zou <[email protected]> AuthorDate: Thu Mar 21 22:41:25 2024 +0800 [fix](memory) Fix thread context not initialized in MacOS (#32570) --- be/src/olap/rowset/segment_v2/page_io.cpp | 6 +++++- be/src/vec/common/allocator.cpp | 9 ++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/page_io.cpp b/be/src/olap/rowset/segment_v2/page_io.cpp index cf6e0541612..ac489d451e7 100644 --- a/be/src/olap/rowset/segment_v2/page_io.cpp +++ b/be/src/olap/rowset/segment_v2/page_io.cpp @@ -147,7 +147,11 @@ Status PageIO::read_and_decompress_page(const PageReadOptions& opts, PageHandle* if (opts.use_page_cache && cache) { page_mem_tracker = cache->mem_tracker(opts.type); } else { - page_mem_tracker = thread_context()->thread_mem_tracker_mgr->limiter_mem_tracker(); + if (is_thread_context_init()) { + page_mem_tracker = thread_context()->thread_mem_tracker_mgr->limiter_mem_tracker(); + } else { + page_mem_tracker = ExecEnv::GetInstance()->orphan_mem_tracker(); + } } // hold compressed page at first, reset to decompressed page later diff --git a/be/src/vec/common/allocator.cpp b/be/src/vec/common/allocator.cpp index f1dd2af83f7..9501c1bcfc9 100644 --- a/be/src/vec/common/allocator.cpp +++ b/be/src/vec/common/allocator.cpp @@ -38,7 +38,10 @@ template <bool clear_memory_, bool mmap_populate, bool use_mmap> void Allocator<clear_memory_, mmap_populate, use_mmap>::sys_memory_check(size_t size) const { - if (doris::is_thread_context_init() && doris::thread_context()->skip_memory_check != 0) { + if (!doris::is_thread_context_init()) { + return; + } + if (doris::thread_context()->skip_memory_check != 0) { return; } if (doris::MemTrackerLimiter::sys_mem_exceed_limit_check(size)) { @@ -132,10 +135,10 @@ void Allocator<clear_memory_, mmap_populate, use_mmap>::sys_memory_check(size_t template <bool clear_memory_, bool mmap_populate, bool use_mmap> void Allocator<clear_memory_, mmap_populate, use_mmap>::memory_tracker_check(size_t size) const { - if (doris::is_thread_context_init() && doris::thread_context()->skip_memory_check != 0) { + if (!doris::is_thread_context_init()) { return; } - if (!doris::is_thread_context_init()) { + if (doris::thread_context()->skip_memory_check != 0) { return; } auto st = doris::thread_context()->thread_mem_tracker()->check_limit(size); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
