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 076946271ee [enhancement](util) print if using nereids planner when be
coredump (#31981)
076946271ee is described below
commit 076946271eee552d031955cd3f9644bb39af5bcb
Author: TengJianPing <[email protected]>
AuthorDate: Fri Mar 8 23:42:11 2024 +0800
[enhancement](util) print if using nereids planner when be coredump (#31981)
---
be/src/common/signal_handler.h | 8 ++++++++
be/src/runtime/fragment_mgr.cpp | 4 +++-
be/src/runtime/query_context.cpp | 3 ++-
be/src/runtime/query_context.h | 6 +++++-
be/src/runtime/runtime_state.cpp | 4 ++++
be/src/runtime/runtime_state.h | 1 +
be/src/runtime/thread_context.cpp | 1 +
7 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/be/src/common/signal_handler.h b/be/src/common/signal_handler.h
index dad48c163cb..7663467b79a 100644
--- a/be/src/common/signal_handler.h
+++ b/be/src/common/signal_handler.h
@@ -54,6 +54,7 @@ namespace doris::signal {
inline thread_local uint64 query_id_hi;
inline thread_local uint64 query_id_lo;
inline thread_local int64_t tablet_id = 0;
+inline thread_local bool is_nereids = false;
namespace {
@@ -244,6 +245,9 @@ void DumpTimeInfo() {
formatter.AppendString("-");
formatter.AppendUint64(query_id_lo, 16);
formatter.AppendString(" ***\n");
+ formatter.AppendString("*** is nereids: ");
+ formatter.AppendUint64(is_nereids, 10);
+ formatter.AppendString(" ***\n");
formatter.AppendString("*** tablet id: ");
formatter.AppendUint64(tablet_id, 10);
formatter.AppendString(" ***\n");
@@ -436,6 +440,10 @@ inline void set_signal_task_id(TUniqueId tid) {
query_id_lo = tid.lo;
}
+inline void set_signal_is_nereids(bool is_nereids_arg) {
+ is_nereids = is_nereids_arg;
+}
+
inline void InstallFailureSignalHandler() {
// Build the sigaction struct.
struct sigaction sig_action;
diff --git a/be/src/runtime/fragment_mgr.cpp b/be/src/runtime/fragment_mgr.cpp
index ff28680f7aa..0f45973d292 100644
--- a/be/src/runtime/fragment_mgr.cpp
+++ b/be/src/runtime/fragment_mgr.cpp
@@ -612,7 +612,8 @@ Status FragmentMgr::_get_query_ctx(const Params& params,
TUniqueId query_id, boo
// This may be a first fragment request of the query.
// Create the query fragments context.
query_ctx = QueryContext::create_shared(query_id,
params.fragment_num_on_host, _exec_env,
- params.query_options,
params.coord, pipeline);
+ params.query_options,
params.coord, pipeline,
+ params.is_nereids);
RETURN_IF_ERROR(DescriptorTbl::create(&(query_ctx->obj_pool),
params.desc_tbl,
&(query_ctx->desc_tbl)));
// set file scan range params
@@ -687,6 +688,7 @@ Status FragmentMgr::exec_plan_fragment(const
TExecPlanFragmentParams& params,
std::shared_ptr<QueryContext> query_ctx;
bool pipeline_engine_enabled =
params.query_options.__isset.enable_pipeline_engine &&
params.query_options.enable_pipeline_engine;
+
RETURN_IF_ERROR(
_get_query_ctx(params, params.params.query_id,
pipeline_engine_enabled, query_ctx));
{
diff --git a/be/src/runtime/query_context.cpp b/be/src/runtime/query_context.cpp
index bca8b409c02..7dce8488eca 100644
--- a/be/src/runtime/query_context.cpp
+++ b/be/src/runtime/query_context.cpp
@@ -38,12 +38,13 @@ public:
QueryContext::QueryContext(TUniqueId query_id, int total_fragment_num,
ExecEnv* exec_env,
const TQueryOptions& query_options, TNetworkAddress
coord_addr,
- bool is_pipeline)
+ bool is_pipeline, bool is_nereids)
: fragment_num(total_fragment_num),
timeout_second(-1),
_query_id(query_id),
_exec_env(exec_env),
_is_pipeline(is_pipeline),
+ _is_nereids(is_nereids),
_query_options(query_options) {
this->coord_addr = coord_addr;
_start_time = VecDateTimeValue::local_time();
diff --git a/be/src/runtime/query_context.h b/be/src/runtime/query_context.h
index a7c855f4882..36c4f6ae110 100644
--- a/be/src/runtime/query_context.h
+++ b/be/src/runtime/query_context.h
@@ -70,7 +70,8 @@ class QueryContext {
public:
QueryContext(TUniqueId query_id, int total_fragment_num, ExecEnv* exec_env,
- const TQueryOptions& query_options, TNetworkAddress
coord_addr, bool is_pipeline);
+ const TQueryOptions& query_options, TNetworkAddress
coord_addr, bool is_pipeline,
+ bool is_nereids);
~QueryContext();
@@ -235,6 +236,8 @@ public:
_merge_controller_handler = handler;
}
+ bool is_nereids() const { return _is_nereids; }
+
DescriptorTbl* desc_tbl = nullptr;
bool set_rsc_info = false;
std::string user;
@@ -269,6 +272,7 @@ private:
VecDateTimeValue _start_time;
int64_t _bytes_limit = 0;
bool _is_pipeline = false;
+ bool _is_nereids = false;
// A token used to submit olap scanner to the "_limited_scan_thread_pool",
// This thread pool token is created from "_limited_scan_thread_pool" from
exec env.
diff --git a/be/src/runtime/runtime_state.cpp b/be/src/runtime/runtime_state.cpp
index b04a7eed819..a39c0c58e7d 100644
--- a/be/src/runtime/runtime_state.cpp
+++ b/be/src/runtime/runtime_state.cpp
@@ -533,4 +533,8 @@ Status RuntimeState::register_consumer_runtime_filter(const
doris::TRuntimeFilte
consumer_filter, false, false);
}
}
+
+bool RuntimeState::is_nereids() const {
+ return _query_ctx->is_nereids();
+}
} // end namespace doris
diff --git a/be/src/runtime/runtime_state.h b/be/src/runtime/runtime_state.h
index bd54ca98e66..156a0998d4d 100644
--- a/be/src/runtime/runtime_state.h
+++ b/be/src/runtime/runtime_state.h
@@ -579,6 +579,7 @@ public:
Status register_consumer_runtime_filter(const doris::TRuntimeFilterDesc&
desc,
bool need_local_merge, int node_id,
doris::IRuntimeFilter**
producer_filter);
+ bool is_nereids() const;
private:
Status create_error_log_file();
diff --git a/be/src/runtime/thread_context.cpp
b/be/src/runtime/thread_context.cpp
index cd03c67b993..fca09fcabc5 100644
--- a/be/src/runtime/thread_context.cpp
+++ b/be/src/runtime/thread_context.cpp
@@ -33,6 +33,7 @@ AttachTask::AttachTask(const
std::shared_ptr<MemTrackerLimiter>& mem_tracker,
AttachTask::AttachTask(RuntimeState* runtime_state) {
ThreadLocalHandle::create_thread_local_if_not_exits();
signal::set_signal_task_id(runtime_state->query_id());
+ signal::set_signal_is_nereids(runtime_state->is_nereids());
thread_context()->attach_task(runtime_state->query_id(),
runtime_state->fragment_instance_id(),
runtime_state->query_mem_tracker());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]