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]

Reply via email to