This is an automated email from the ASF dual-hosted git repository. yiguolei 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 0f21166110 [fix](memory) Fix runtime state default mem tracker (#20615) 0f21166110 is described below commit 0f211661106376893852bffca7191927ad9f9811 Author: Xinyi Zou <zouxiny...@gmail.com> AuthorDate: Fri Jun 9 21:09:07 2023 +0800 [fix](memory) Fix runtime state default mem tracker (#20615) start time: Wed 07 Jun 2023 06:50:14 PM CST *** Query id: e9000000e9-eb00000073 *** *** Aborted at 1686136356 (unix time) try "date -d @1686136356" if you are using GNU date *** *** Current BE git commitID: 5c33dd7a2c *** *** SIGSEGV address not mapped to object (@0x23000000235) received by PID 2131238 (TID 2132258 OR 0x7f708eff7700) from PID 565; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/hdd01/repo_center/doris_branch-2.0-beta/doris/be/src/common/signal_handler.h:413 1# 0x00007F727BBE3090 in /lib/x86_64-linux-gnu/libc.so.6 2# doris::AttachTask::AttachTask(doris::RuntimeState*) at /mnt/hdd01/repo_center/doris_branch-2.0-beta/doris/be/src/runtime/thread_context.cpp:43 3# std::_Function_handler<void (doris::PTabletWriterAddBlockResult const&, bool), doris::stream_load::VNodeChannel::open_wait()::$_1>::_M_invoke(std::_Any_data const&, doris::PTabletWriterAddBlockResult const&, bool&&) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291 4# doris::stream_load::ReusableClosure<doris::PTabletWriterAddBlockResult>::Run() at /mnt/hdd01/repo_center/doris_branch-2.0-beta/doris/be/src/vec/sink/vtablet_sink.h:176 5# brpc::Controller::EndRPC(brpc::Controller::CompletionInfo const&) in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 6# brpc::Controller::OnVersionedRPCReturned(brpc::Controller::CompletionInfo const&, bool, int) in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 7# brpc::policy::ProcessRpcResponse(brpc::InputMessageBase*) in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 8# brpc::InputMessenger::InputMessageClosure::~InputMessageClosure() in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 9# brpc::InputMessenger::OnNewMessages(brpc::Socket*) in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 10# brpc::Socket::ProcessEvent(void*) in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 11# bthread::TaskGroup::task_runner(long) in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be 12# bthread_make_fcontext in /root/20230607171843-doris-branch-2.0-beta-5c33dd7a/be/lib/doris_be --- be/src/olap/push_handler.cpp | 6 +----- be/src/runtime/fold_constant_executor.cpp | 6 +----- be/src/runtime/runtime_state.cpp | 12 +++++++++--- be/src/runtime/runtime_state.h | 6 +++--- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/be/src/olap/push_handler.cpp b/be/src/olap/push_handler.cpp index 2a7f1d2d5d..1fcb1abcdc 100644 --- a/be/src/olap/push_handler.cpp +++ b/be/src/olap/push_handler.cpp @@ -371,11 +371,7 @@ Status PushBrokerReader::init() { return Status::Error<PUSH_INIT_ERROR>(); } _runtime_state->set_desc_tbl(desc_tbl); - status = _runtime_state->init_mem_trackers(dummy_id); - if (UNLIKELY(!status.ok())) { - LOG(WARNING) << "Failed to init mem trackers, msg: " << status; - return Status::Error<PUSH_INIT_ERROR>(); - } + _runtime_state->init_mem_trackers(dummy_id, "PushBrokerReader"); _runtime_profile = _runtime_state->runtime_profile(); _runtime_profile->set_name("PushBrokerReader"); diff --git a/be/src/runtime/fold_constant_executor.cpp b/be/src/runtime/fold_constant_executor.cpp index 5e8932ff01..2d89dbf254 100644 --- a/be/src/runtime/fold_constant_executor.cpp +++ b/be/src/runtime/fold_constant_executor.cpp @@ -148,11 +148,7 @@ Status FoldConstantExecutor::_init(const TQueryGlobals& query_globals, return status; } _runtime_state->set_desc_tbl(desc_tbl); - status = _runtime_state->init_mem_trackers(_query_id); - if (UNLIKELY(!status.ok())) { - LOG(WARNING) << "Failed to init mem trackers, msg: " << status; - return status; - } + _runtime_state->init_mem_trackers(_query_id, "FoldConstant"); _runtime_profile = _runtime_state->runtime_profile(); _runtime_profile->set_name("FoldConstantExpr"); diff --git a/be/src/runtime/runtime_state.cpp b/be/src/runtime/runtime_state.cpp index e68e55aa72..18b3e9cc44 100644 --- a/be/src/runtime/runtime_state.cpp +++ b/be/src/runtime/runtime_state.cpp @@ -241,10 +241,16 @@ Status RuntimeState::init(const TUniqueId& fragment_instance_id, const TQueryOpt return Status::OK(); } -Status RuntimeState::init_mem_trackers(const TUniqueId& query_id) { +void RuntimeState::init_mem_trackers(const TUniqueId& id, const std::string& name) { _query_mem_tracker = std::make_shared<MemTrackerLimiter>( - MemTrackerLimiter::Type::QUERY, fmt::format("TestQuery#Id={}", print_id(query_id))); - return Status::OK(); + MemTrackerLimiter::Type::EXPERIMENTAL, fmt::format("{}#Id={}", name, print_id(id))); +} + +std::shared_ptr<MemTrackerLimiter> RuntimeState::query_mem_tracker() const { + if (!_query_mem_tracker) { + return _exec_env->orphan_mem_tracker(); + } + return _query_mem_tracker; } bool RuntimeState::log_error(const std::string& error) { diff --git a/be/src/runtime/runtime_state.h b/be/src/runtime/runtime_state.h index 53382c925a..27f2d8e328 100644 --- a/be/src/runtime/runtime_state.h +++ b/be/src/runtime/runtime_state.h @@ -83,7 +83,7 @@ public: const TQueryGlobals& query_globals, ExecEnv* exec_env); // for ut and non-query. - Status init_mem_trackers(const TUniqueId& query_id = TUniqueId()); + void init_mem_trackers(const TUniqueId& id = TUniqueId(), const std::string& name = "unknown"); const TQueryOptions& query_options() const { return _query_options; } int64_t scan_queue_mem_limit() const { @@ -116,7 +116,7 @@ public: const TUniqueId& query_id() const { return _query_id; } const TUniqueId& fragment_instance_id() const { return _fragment_instance_id; } ExecEnv* exec_env() { return _exec_env; } - std::shared_ptr<MemTrackerLimiter> query_mem_tracker() { return _query_mem_tracker; } + std::shared_ptr<MemTrackerLimiter> query_mem_tracker() const; // Returns runtime state profile RuntimeProfile* runtime_profile() { return &_profile; } @@ -418,7 +418,7 @@ private: static const int DEFAULT_BATCH_SIZE = 2048; - std::shared_ptr<MemTrackerLimiter> _query_mem_tracker; + std::shared_ptr<MemTrackerLimiter> _query_mem_tracker = nullptr; // put runtime state before _obj_pool, so that it will be deconstructed after // _obj_pool. Because some of object in _obj_pool will use profile when deconstructing. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org