diff --git a/be/src/pipeline/pipeline_fragment_context.h b/be/src/pipeline/pipeline_fragment_context.h index 770b64d0dc0a66..aaf48a9d06defb 100644 --- a/be/src/pipeline/pipeline_fragment_context.h +++ b/be/src/pipeline/pipeline_fragment_context.h @@ -71,6 +71,8 @@ class PipelineFragmentContext : public TaskExecutionContext { bool is_timeout(const VecDateTimeValue& now) const; + int timeout_second() const { return _timeout; } + PipelinePtr add_pipeline(); PipelinePtr add_pipeline(PipelinePtr parent, int idx = -1); diff --git a/be/src/runtime/fragment_mgr.cpp b/be/src/runtime/fragment_mgr.cpp index ade9a885aae521..6646b8cdf274f5 100644 --- a/be/src/runtime/fragment_mgr.cpp +++ b/be/src/runtime/fragment_mgr.cpp @@ -797,16 +797,24 @@ std::string FragmentMgr::dump_pipeline_tasks(int64_t duration) { size_t i = 0; { std::lock_guard lock(_lock); - fmt::format_to(debug_string_buffer, "{} pipeline fragment contexts are still running!\n", - _pipeline_map.size()); + fmt::format_to(debug_string_buffer, + "{} pipeline fragment contexts are still running! duration_limit={}\n", + _pipeline_map.size(), duration); + + timespec now; + clock_gettime(CLOCK_MONOTONIC, &now); for (auto& it : _pipeline_map) { auto elapsed = (t - it.second->create_time()) / 1000000000.0; if (elapsed < duration) { // Only display tasks which has been running for more than {duration} seconds. continue; } - fmt::format_to(debug_string_buffer, "No.{} (elapse time = {}s, InstanceId = {}) : {}\n", - i, elapsed, print_id(it.first), it.second->debug_string()); + auto timeout_second = it.second->timeout_second(); + fmt::format_to(debug_string_buffer, + "No.{} (elapse_second={}s, query_timeout_second={}s, instance_id=" + "{}) : {}\n", + i, elapsed, timeout_second, print_id(it.first), + it.second->debug_string()); i++; } }