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 <wan...@selectdb.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to