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