You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by da...@apache.org on 2024/04/28 12:56:44 UTC
(doris) 04/08: [fix](profile) Fix print profile in be log (#34166)
This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-4.0-preview
in repository https://gitbox.apache.org/repos/asf/doris.git
commit b844ac3cb7415bff1b74919e2d32da24522f96e0
Author: zhiqiang <se...@163.com>
AuthorDate: Sat Apr 27 19:20:40 2024 +0800
[fix](profile) Fix print profile in be log (#34166)
---
be/src/pipeline/pipeline_fragment_context.cpp | 13 +++++++++++--
.../java/org/apache/doris/planner/StreamLoadPlanner.java | 2 ++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/be/src/pipeline/pipeline_fragment_context.cpp b/be/src/pipeline/pipeline_fragment_context.cpp
index 5292bc65ce9..380a89c9e13 100644
--- a/be/src/pipeline/pipeline_fragment_context.cpp
+++ b/be/src/pipeline/pipeline_fragment_context.cpp
@@ -926,6 +926,13 @@ void PipelineFragmentContext::_close_fragment_instance() {
_runtime_state->runtime_profile()->total_time_counter()->update(
_fragment_watcher.elapsed_time());
static_cast<void>(send_report(true));
+ // Print profile content in info log is a tempoeray solution for stream load.
+ // Since stream load does not have someting like coordinator on FE, so
+ // backend can not report profile to FE, ant its profile can not be shown
+ // in the same way with other query. So we print the profile content to info log.
+ // Print profile content in log is harmful for log readability, info log will be
+ // full of profile content, and not just profile of stream load.
+ // We know it, but currently we do not have a cheap and good solution for this.
if (_runtime_state->enable_profile()) {
std::stringstream ss;
// Compute the _local_time_percent before pretty_print the runtime_profile
@@ -934,8 +941,10 @@ void PipelineFragmentContext::_close_fragment_instance() {
// After add the operation, the print out like that:
// UNION_NODE (id=0):(Active: 56.720us, non-child: 82.53%)
// We can easily know the exec node execute time without child time consumed.
- _runtime_state->runtime_profile()->compute_time_in_profile();
- _runtime_state->runtime_profile()->pretty_print(&ss);
+ for (const auto& runtime_profile_ptr : _runtime_state->pipeline_id_to_profile()) {
+ runtime_profile_ptr->pretty_print(&ss);
+ }
+
if (_runtime_state->load_channel_profile()) {
_runtime_state->load_channel_profile()->pretty_print(&ss);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java
index 53576aa7e9c..478efef2d00 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java
@@ -331,6 +331,7 @@ public class StreamLoadPlanner {
queryOptions.setEnablePipelineEngine(Config.enable_pipeline_load);
queryOptions.setBeExecVersion(Config.be_exec_version);
queryOptions.setIsReportSuccess(taskInfo.getEnableProfile());
+ queryOptions.setEnableProfile(taskInfo.getEnableProfile());
queryOptions.setEnableMemtableOnSinkNode(enableMemtableOnSinkNode);
params.setQueryOptions(queryOptions);
TQueryGlobals queryGlobals = new TQueryGlobals();
@@ -567,6 +568,7 @@ public class StreamLoadPlanner {
queryOptions.setEnablePipelineEngine(Config.enable_pipeline_load);
queryOptions.setBeExecVersion(Config.be_exec_version);
queryOptions.setIsReportSuccess(taskInfo.getEnableProfile());
+ queryOptions.setEnableProfile(taskInfo.getEnableProfile());
queryOptions.setEnableMemtableOnSinkNode(enableMemtableOnSinkNode);
pipParams.setQueryOptions(queryOptions);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org