This is an automated email from the ASF dual-hosted git repository.
wangbo 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 9b9bd9ee0e1 [Improment]log more detail when query hits policy (#44685)
9b9bd9ee0e1 is described below
commit 9b9bd9ee0e152aaa84d4933d2973dfc2ce11319d
Author: wangbo <[email protected]>
AuthorDate: Thu Nov 28 10:09:07 2024 +0800
[Improment]log more detail when query hits policy (#44685)
---
.../runtime/workload_management/workload_action.cpp | 2 +-
.../runtime/workload_management/workload_condition.h | 20 ++++++++++++++++++++
.../workload_management/workload_query_info.h | 3 ++-
.../workload_management/workload_sched_policy.cpp | 5 +++++
4 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/be/src/runtime/workload_management/workload_action.cpp
b/be/src/runtime/workload_management/workload_action.cpp
index 8e6e3b19e2c..77042b074fd 100644
--- a/be/src/runtime/workload_management/workload_action.cpp
+++ b/be/src/runtime/workload_management/workload_action.cpp
@@ -25,7 +25,7 @@ void WorkloadActionCancelQuery::exec(WorkloadQueryInfo*
query_info) {
std::stringstream msg;
msg << "query " << query_info->query_id
<< " cancelled by workload policy: " << query_info->policy_name
- << ", id:" << query_info->policy_id;
+ << ", id:" << query_info->policy_id << ", " <<
query_info->cond_eval_msg;
std::string msg_str = msg.str();
LOG(INFO) << "[workload_schedule]" << msg_str;
ExecEnv::GetInstance()->fragment_mgr()->cancel_query(query_info->tquery_id,
diff --git a/be/src/runtime/workload_management/workload_condition.h
b/be/src/runtime/workload_management/workload_condition.h
index a85268a8dc3..cf53a5f07dd 100644
--- a/be/src/runtime/workload_management/workload_condition.h
+++ b/be/src/runtime/workload_management/workload_condition.h
@@ -33,6 +33,10 @@ public:
virtual bool eval(std::string str_val) = 0;
virtual WorkloadMetricType get_workload_metric_type() = 0;
+
+ virtual std::string get_metric_string() = 0;
+
+ virtual std::string get_metric_value_string() = 0;
};
class WorkloadConditionQueryTime : public WorkloadCondition {
@@ -45,6 +49,10 @@ public:
return WorkloadMetricType::QUERY_TIME;
}
+ std::string get_metric_string() override { return "query_time"; }
+
+ std::string get_metric_value_string() override { return
std::to_string(_query_time); }
+
private:
int64_t _query_time;
WorkloadCompareOperator _op;
@@ -56,6 +64,10 @@ public:
bool eval(std::string str_val) override;
WorkloadMetricType get_workload_metric_type() override { return
WorkloadMetricType::SCAN_ROWS; }
+ std::string get_metric_string() override { return "scan_rows"; }
+
+ std::string get_metric_value_string() override { return
std::to_string(_scan_rows); }
+
private:
int64_t _scan_rows;
WorkloadCompareOperator _op;
@@ -69,6 +81,10 @@ public:
return WorkloadMetricType::SCAN_BYTES;
}
+ std::string get_metric_string() override { return "scan_bytes"; }
+
+ std::string get_metric_value_string() override { return
std::to_string(_scan_bytes); }
+
private:
int64_t _scan_bytes;
WorkloadCompareOperator _op;
@@ -82,6 +98,10 @@ public:
return WorkloadMetricType::QUERY_MEMORY_BYTES;
}
+ std::string get_metric_string() override { return "query_memory"; }
+
+ std::string get_metric_value_string() override { return
std::to_string(_query_memory_bytes); }
+
private:
int64_t _query_memory_bytes;
WorkloadCompareOperator _op;
diff --git a/be/src/runtime/workload_management/workload_query_info.h
b/be/src/runtime/workload_management/workload_query_info.h
index e544668e103..16151eec390 100644
--- a/be/src/runtime/workload_management/workload_query_info.h
+++ b/be/src/runtime/workload_management/workload_query_info.h
@@ -30,7 +30,8 @@ public:
std::string query_id;
int64_t wg_id;
int64_t policy_id;
- std::string policy_name;
+ std::string policy_name {""};
+ std::string cond_eval_msg {""};
};
} // namespace doris
\ No newline at end of file
diff --git a/be/src/runtime/workload_management/workload_sched_policy.cpp
b/be/src/runtime/workload_management/workload_sched_policy.cpp
index efa8965dd77..63b9362bc21 100644
--- a/be/src/runtime/workload_management/workload_sched_policy.cpp
+++ b/be/src/runtime/workload_management/workload_sched_policy.cpp
@@ -60,6 +60,7 @@ bool WorkloadSchedPolicy::is_match(WorkloadQueryInfo*
query_info_ptr) {
}
auto& metric_val_map = query_info_ptr->metric_map;
+ std::string cond_eval_msg = "";
for (auto& cond : _condition_list) {
if (metric_val_map.find(cond->get_workload_metric_type()) ==
metric_val_map.end()) {
return false;
@@ -69,7 +70,11 @@ bool WorkloadSchedPolicy::is_match(WorkloadQueryInfo*
query_info_ptr) {
if (!cond->eval(val)) {
return false;
}
+ cond_eval_msg += cond->get_metric_string() + ":" + val + "(" +
+ cond->get_metric_value_string() + "), ";
}
+ cond_eval_msg = cond_eval_msg.substr(0, cond_eval_msg.size() - 2);
+ query_info_ptr->cond_eval_msg = cond_eval_msg;
return true;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]