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 1d825f57bc [fix](load) expose error root cause msg for load (#22968)
1d825f57bc is described below
commit 1d825f57bc8d3cacb57e19f5499a3a7e355510b1
Author: zhengyu <[email protected]>
AuthorDate: Tue Aug 15 13:22:45 2023 +0800
[fix](load) expose error root cause msg for load (#22968)
Currently, we only return ambiguous "INTERNAL ERROR" to the user when
load. This commit will no more hide the root cause.
Signed-off-by: freemandealer <[email protected]>
---
be/src/pipeline/pipeline_fragment_context.cpp | 4 ++--
be/src/runtime/fragment_mgr.cpp | 5 +++--
be/src/runtime/plan_fragment_executor.cpp | 2 +-
be/src/runtime/runtime_state.h | 4 ++--
4 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/be/src/pipeline/pipeline_fragment_context.cpp
b/be/src/pipeline/pipeline_fragment_context.cpp
index ae91ab3381..d37410edb1 100644
--- a/be/src/pipeline/pipeline_fragment_context.cpp
+++ b/be/src/pipeline/pipeline_fragment_context.cpp
@@ -157,7 +157,7 @@ void PipelineFragmentContext::cancel(const
PPlanFragmentCancelReason& reason,
if (reason != PPlanFragmentCancelReason::LIMIT_REACH) {
_exec_status = Status::Cancelled(msg);
}
- _runtime_state->set_is_cancelled(true);
+ _runtime_state->set_is_cancelled(true, msg);
LOG(WARNING) << "PipelineFragmentContext Canceled. reason=" << msg;
@@ -172,7 +172,7 @@ void PipelineFragmentContext::cancel(const
PPlanFragmentCancelReason& reason,
// For stream load the fragment's query_id == load id, it is set in FE.
auto stream_load_ctx =
_exec_env->new_load_stream_mgr()->get(_query_id);
if (stream_load_ctx != nullptr) {
-
stream_load_ctx->pipe->cancel(PPlanFragmentCancelReason_Name(reason));
+ stream_load_ctx->pipe->cancel(msg);
}
_cancel_reason = reason;
_cancel_msg = msg;
diff --git a/be/src/runtime/fragment_mgr.cpp b/be/src/runtime/fragment_mgr.cpp
index 9b184f6c33..c8fb7ac9ac 100644
--- a/be/src/runtime/fragment_mgr.cpp
+++ b/be/src/runtime/fragment_mgr.cpp
@@ -266,7 +266,8 @@ Status FragmentExecState::execute() {
strings::Substitute("Got error while opening fragment
$0, query id: $1",
print_id(_fragment_instance_id),
print_id(_query_id)));
if (!st.ok()) {
- cancel(PPlanFragmentCancelReason::INTERNAL_ERROR,
"PlanFragmentExecutor open failed");
+ cancel(PPlanFragmentCancelReason::INTERNAL_ERROR,
+ fmt::format("PlanFragmentExecutor open failed, reason: {}",
st.to_string()));
}
_executor.close();
}
@@ -287,7 +288,7 @@ Status FragmentExecState::cancel(const
PPlanFragmentCancelReason& reason, const
// For stream load the fragment's query_id == load id, it is set in FE.
auto stream_load_ctx =
_query_ctx->exec_env()->new_load_stream_mgr()->get(_query_id);
if (stream_load_ctx != nullptr) {
-
stream_load_ctx->pipe->cancel(PPlanFragmentCancelReason_Name(reason));
+ stream_load_ctx->pipe->cancel(msg);
}
#endif
_cancelled = true;
diff --git a/be/src/runtime/plan_fragment_executor.cpp
b/be/src/runtime/plan_fragment_executor.cpp
index aba0893046..f4eb2dffa5 100644
--- a/be/src/runtime/plan_fragment_executor.cpp
+++ b/be/src/runtime/plan_fragment_executor.cpp
@@ -496,7 +496,7 @@ void PlanFragmentExecutor::cancel(const
PPlanFragmentCancelReason& reason, const
DCHECK(_prepared);
_cancel_reason = reason;
_cancel_msg = msg;
- _runtime_state->set_is_cancelled(true);
+ _runtime_state->set_is_cancelled(true, msg);
// To notify wait_for_start()
_runtime_state->get_query_ctx()->set_ready_to_execute(true);
diff --git a/be/src/runtime/runtime_state.h b/be/src/runtime/runtime_state.h
index 6ef4ee1081..1f35f6c1b8 100644
--- a/be/src/runtime/runtime_state.h
+++ b/be/src/runtime/runtime_state.h
@@ -160,11 +160,11 @@ public:
bool is_cancelled() const { return _is_cancelled.load(); }
int codegen_level() const { return _query_options.codegen_level; }
- void set_is_cancelled(bool v) {
+ void set_is_cancelled(bool v, std::string msg) {
_is_cancelled.store(v);
// Create a error status, so that we could print error stack, and
// we could know which path call cancel.
- LOG(INFO) << "task is cancelled, st = " <<
Status::Error<ErrorCode::CANCELLED>("");
+ LOG(INFO) << "task is cancelled, st = " <<
Status::Error<ErrorCode::CANCELLED>(msg);
}
void set_backend_id(int64_t backend_id) { _backend_id = backend_id; }
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]