This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 732d8c6184f [Fix](compaction) Fix nullptr in CloudStorageEngine due to 
concurrent access to compaction maps (#50819)
732d8c6184f is described below

commit 732d8c6184fbfea847ed0ad2a2a4a30aa4a43206
Author: abmdocrt <[email protected]>
AuthorDate: Wed May 14 11:27:17 2025 +0800

    [Fix](compaction) Fix nullptr in CloudStorageEngine due to concurrent 
access to compaction maps (#50819)
    
    Related PR: #49882
    
    Problem Summary:
    
    *** Query id: 0-0 ***
    *** is nereids: 0 ***
    *** tablet id: 0 ***
    *** Aborted at 1746727905 (unix time) try "date -d @1746727905" if you
    are using GNU date ***
    *** Current BE git commitID: ace825afc5 ***
    *** SIGSEGV address not mapped to object (@0x8) received by PID 3151893
    (TID 3152363 OR 0x7f1186c00640) from PID 8; stack trace: ***
    0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
    siginfo_t*, void*) at
    
/home/zcp/repo_center/doris_branch-3.0/doris/be/src/common/signal_handler.h:421
    1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0]
    in /usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
    2# JVM_handle_linux_signal in
    /usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
     3# 0x00007F12D9FEE520 in /lib/x86_64-linux-gnu/libc.so.6
    4# std::_Hashtable<long, std::pair<long const,
    std::shared_ptr<doris::CloudBaseCompaction> >,
    std::allocator<std::pair<long const,
    std::shared_ptr<doris::CloudBaseCompaction> > >,
    std::__detail::_Select1st, std::equal_to<long>, std::hash<long>,
    std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
    std::__detail::_Prime_rehash_policy,
    std::__detail::_Hashtable_traits<false, false, true>
    >::_M_find_before_node(unsigned long, long const&, unsigned long) const
    at
    
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/hashtable.h:1817
    5# std::pair<std::__detail::_Node_iterator<std::pair<long const,
    std::shared_ptr<doris::CloudBaseCompaction> >, false, false>, bool>
    std::_Hashtable<long, std::pair<long const,
    std::shared_ptr<doris::CloudBaseCompaction> >,
    std::allocator<std::pair<long const,
    std::shared_ptr<doris::CloudBaseCompaction> > >,
    std::__detail::_Select1st, std::equal_to<long>, std::hash<long>,
    std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash,
    std::__detail::_Prime_rehash_policy,
    std::__detail::_Hashtable_traits<false, false, true> >::_M_emplace<long,
    decltype(nullptr)>(std::integral_constant<bool, true>, long&&,
    decltype(nullptr)&&) at
    
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/hashtable.h:1947
    6#
    
doris::CloudStorageEngine::_submit_base_compaction_task(std::shared_ptr<doris::CloudTablet>
    const&) in /mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
    7#
    
doris::CloudStorageEngine::submit_compaction_task(std::shared_ptr<doris::CloudTablet>
    const&, doris::CompactionType) at
    
/home/zcp/repo_center/doris_branch-3.0/doris/be/src/cloud/cloud_storage_engine.cpp:917
    8# doris::CloudStorageEngine::_compaction_tasks_producer_callback() at
    
/home/zcp/repo_center/doris_branch-3.0/doris/be/src/cloud/cloud_storage_engine.cpp:494
    9# doris::Thread::supervise_thread(void*) at
    /home/zcp/repo_center/doris_branch-3.0/doris/be/src/util/thread.cpp:499
    10# start_thread at ./nptl/pthread_create.c:442
    11# 0x00007F12DA0D2850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
---
 be/src/cloud/cloud_storage_engine.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/be/src/cloud/cloud_storage_engine.cpp 
b/be/src/cloud/cloud_storage_engine.cpp
index cf50eabd03f..bb9200587dd 100644
--- a/be/src/cloud/cloud_storage_engine.cpp
+++ b/be/src/cloud/cloud_storage_engine.cpp
@@ -686,6 +686,7 @@ Status 
CloudStorageEngine::_submit_base_compaction_task(const CloudTabletSPtr& t
         signal::tablet_id = tablet->tablet_id();
         Defer defer {[&]() {
             g_base_compaction_running_task_count << -1;
+            std::lock_guard lock(_compaction_mtx);
             _submitted_base_compactions.erase(tablet->tablet_id());
         }};
         auto st = 
_request_tablet_global_compaction_lock(ReaderType::READER_BASE_COMPACTION, 
tablet,
@@ -885,6 +886,7 @@ Status 
CloudStorageEngine::_submit_full_compaction_task(const CloudTabletSPtr& t
         signal::tablet_id = tablet->tablet_id();
         Defer defer {[&]() {
             g_full_compaction_running_task_count << -1;
+            std::lock_guard lock(_compaction_mtx);
             _submitted_full_compactions.erase(tablet->tablet_id());
         }};
         auto st = 
_request_tablet_global_compaction_lock(ReaderType::READER_FULL_COMPACTION, 
tablet,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to