This is an automated email from the ASF dual-hosted git repository.
lihaopeng pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 9115b646727 [enhancement](util) print if using nereids planner when be
coredump #31981 (#41605)
9115b646727 is described below
commit 9115b646727b3b5ba891c13eabef0170b1b33029
Author: Mryange <[email protected]>
AuthorDate: Thu Oct 10 15:31:36 2024 +0800
[enhancement](util) print if using nereids planner when be coredump #31981
(#41605)
pick https://github.com/apache/doris/pull/31752
pick https://github.com/apache/doris/pull/31981
```
*** Query id: 77433c763b14535-be989f185c71e240 ***
*** is nereids: 0 ***
*** tablet id: 0 ***
*** Aborted at 1728464190 (unix time) try "date -d @1728464190" if you are
using GNU date ***
*** Current BE git commitID: eaaf726019 ***
*** SIGABRT unknown detail explain (@0x47000060661) received by PID 394849
(TID 395426 OR 0x7ff4a5f36700) from PID 394849; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at
/mnt/disk2/yanxuecheng/branch-2.0/doris/be/src/common/signal_handler.h:421
1# 0x00007FF6CED47B50 in /lib64/libc.so.6
2# gsignal in /lib64/libc.so.6
*** Query id: 1b3633126e640e0-b1f06a5bb6c0b1cc ***
*** is nereids: 1 ***
*** tablet id: 0 ***
*** Aborted at 1728464469 (unix time) try "date -d @1728464469" if you are
using GNU date ***
*** Current BE git commitID: eaaf726019 ***
*** SIGABRT unknown detail explain (@0x4700006f5b8) received by PID 456120
(TID 456600 OR 0x7f72da8df700) from PID 456120; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at
/mnt/disk2/yanxuecheng/branch-2.0/doris/be/src/common/signal_handler.h:421
1# 0x00007F745021BB50 in /lib64/libc.so.6
```
---
be/src/common/signal_handler.h | 8 ++++++++
be/src/runtime/fragment_mgr.cpp | 3 ++-
be/src/runtime/query_context.h | 10 ++++++++--
be/src/runtime/runtime_state.cpp | 10 ++++++++++
be/src/runtime/runtime_state.h | 3 +++
be/src/runtime/thread_context.cpp | 1 +
fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java | 3 +++
gensrc/thrift/PaloInternalService.thrift | 4 ++++
8 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/be/src/common/signal_handler.h b/be/src/common/signal_handler.h
index 013b0e1c642..c2340ddd83e 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 057a78827cc..303ba449325 100644
--- a/be/src/runtime/fragment_mgr.cpp
+++ b/be/src/runtime/fragment_mgr.cpp
@@ -681,7 +681,7 @@ 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(params.fragment_num_on_host,
_exec_env,
- params.query_options);
+
params.query_options,params.is_nereids);
query_ctx->query_id = query_id;
RETURN_IF_ERROR(DescriptorTbl::create(&(query_ctx->obj_pool),
params.desc_tbl,
&(query_ctx->desc_tbl)));
@@ -812,6 +812,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.h b/be/src/runtime/query_context.h
index e47e09e5921..dc340efadc2 100644
--- a/be/src/runtime/query_context.h
+++ b/be/src/runtime/query_context.h
@@ -51,8 +51,10 @@ class QueryContext {
ENABLE_FACTORY_CREATOR(QueryContext);
public:
- QueryContext(int total_fragment_num, ExecEnv* exec_env, const
TQueryOptions& query_options)
- : fragment_num(total_fragment_num),
+ QueryContext(int total_fragment_num, ExecEnv* exec_env, const
TQueryOptions& query_options,
+ bool is_nereids)
+ : _is_nereids(is_nereids),
+ fragment_num(total_fragment_num),
timeout_second(-1),
_exec_env(exec_env),
_runtime_filter_mgr(new RuntimeFilterMgr(TUniqueId(), this)),
@@ -222,12 +224,16 @@ public:
public:
TUniqueId query_id;
DescriptorTbl* desc_tbl;
+
+ bool is_nereids() const { return _is_nereids; }
+
bool set_rsc_info = false;
std::string user;
std::string group;
TNetworkAddress coord_addr;
TNetworkAddress current_connect_fe;
TQueryGlobals query_globals;
+ const bool _is_nereids;
/// In the current implementation, for multiple fragments executed by a
query on the same BE node,
/// we store some common components in QueryContext, and save QueryContext
in FragmentMgr.
diff --git a/be/src/runtime/runtime_state.cpp b/be/src/runtime/runtime_state.cpp
index 88a2e630d43..ae7b186111f 100644
--- a/be/src/runtime/runtime_state.cpp
+++ b/be/src/runtime/runtime_state.cpp
@@ -34,6 +34,7 @@
#include "runtime/load_path_mgr.h"
#include "runtime/memory/mem_tracker_limiter.h"
#include "runtime/memory/thread_mem_tracker_mgr.h"
+#include "runtime/query_context.h"
#include "runtime/runtime_filter_mgr.h"
#include "runtime/thread_context.h"
#include "util/timezone_utils.h"
@@ -390,4 +391,13 @@ bool RuntimeState::enable_page_cache() const {
(_query_options.__isset.enable_page_cache &&
_query_options.enable_page_cache);
}
+bool RuntimeState::is_nereids() const {
+#ifdef BE_TEST
+ if (_query_ctx == nullptr) {
+ return false;
+ }
+#endif
+ DCHECK(_query_ctx);
+ 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 a27266614e8..d63dfc4d732 100644
--- a/be/src/runtime/runtime_state.h
+++ b/be/src/runtime/runtime_state.h
@@ -450,6 +450,9 @@ public:
: 0;
}
+
+ 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 a092385f410..36a030a3239 100644
--- a/be/src/runtime/thread_context.cpp
+++ b/be/src/runtime/thread_context.cpp
@@ -40,6 +40,7 @@ AttachTask::AttachTask(const
std::shared_ptr<MemTrackerLimiter>& mem_tracker,
AttachTask::AttachTask(RuntimeState* runtime_state) {
SwitchBthreadLocal::switch_to_bthread_local();
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());
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
index f3b6dabbf46..3e06f38633e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
@@ -3203,6 +3203,7 @@ public class Coordinator implements CoordInterface {
for (int i = 0; i < instanceExecParams.size(); ++i) {
final FInstanceExecParam instanceExecParam =
instanceExecParams.get(i);
TExecPlanFragmentParams params = new TExecPlanFragmentParams();
+ params.setIsNereids(ConnectContext.get() != null ?
ConnectContext.get().getState().isNereids() : false);
params.setProtocolVersion(PaloInternalServiceVersion.V1);
params.setFragment(fragment.toThrift());
params.setDescTbl(descTable);
@@ -3302,6 +3303,8 @@ public class Coordinator implements CoordInterface {
TPipelineFragmentParams params = new
TPipelineFragmentParams();
// Set global param
+ params.setIsNereids(
+ ConnectContext.get() != null ?
ConnectContext.get().getState().isNereids() : false);
params.setProtocolVersion(PaloInternalServiceVersion.V1);
params.setDescTbl(descTable);
params.setQueryId(queryId);
diff --git a/gensrc/thrift/PaloInternalService.thrift
b/gensrc/thrift/PaloInternalService.thrift
index b251ee94c68..5cffb6a3051 100644
--- a/gensrc/thrift/PaloInternalService.thrift
+++ b/gensrc/thrift/PaloInternalService.thrift
@@ -464,6 +464,8 @@ struct TExecPlanFragmentParams {
// scan node id -> scan range params, only for external file scan
24: optional map<Types.TPlanNodeId, PlanNodes.TFileScanRangeParams>
file_scan_params
+ 31: optional bool is_nereids = true;
+
32: optional Types.TNetworkAddress current_connect_fe
}
@@ -680,6 +682,8 @@ struct TPipelineFragmentParams {
// scan node id -> scan range params, only for external file scan
29: optional map<Types.TPlanNodeId, PlanNodes.TFileScanRangeParams>
file_scan_params
43: optional Types.TNetworkAddress current_connect_fe
+
+ 40: optional bool is_nereids = true;
}
struct TPipelineFragmentParamsList {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]