diff --git a/src/observer/mysql/ob_query_retry_ctrl.cpp b/src/observer/mysql/ob_query_retry_ctrl.cpp index a60f13d3e7..3a674b886c 100644 --- a/src/observer/mysql/ob_query_retry_ctrl.cpp +++ b/src/observer/mysql/ob_query_retry_ctrl.cpp @@ -744,6 +744,13 @@ void ObQueryRetryCtrl::switch_consumer_group_retry_proc(ObRetryParam &v) retry_obj.test(switch_group_retry); } +void ObQueryRetryCtrl::timeout_proc(ObRetryParam &v) +{ + if (is_try_lock_row_err(v.session_.get_retry_info().get_last_query_retry_err())) { + v.client_ret_ = OB_ERR_EXCLUSIVE_LOCK_CONFLICT; + v.retry_type_ = RETRY_TYPE_NONE; + } +} /////// For inner SQL only /////////////// void ObQueryRetryCtrl::inner_try_lock_row_conflict_proc(ObRetryParam &v) @@ -832,9 +839,6 @@ void ObQueryRetryCtrl::empty_proc(ObRetryParam &v) // 根据"给用户返回导致不重试的最后一个错误码"的原则, // 这里是err不在重试错误码列表中的情况,需要将client_ret设置为相应的值 v.client_ret_ = v.err_; - if (is_timeout_err(v.err_) && is_try_lock_row_err(v.session_.get_retry_info().get_last_query_retry_err())) { - v.client_ret_ = OB_ERR_EXCLUSIVE_LOCK_CONFLICT; - } v.retry_type_ = RETRY_TYPE_NONE; if (OB_ERR_PROXY_REROUTE != v.client_ret_) { LOG_DEBUG("no retry handler for this err code, no need retry", K(v), @@ -979,6 +983,11 @@ int ObQueryRetryCtrl::init() ERR_RETRY_FUNC("SQL", OB_SQL_RETRY_SPM, force_local_retry_proc, force_local_retry_proc); ERR_RETRY_FUNC("SQL", OB_NEED_SWITCH_CONSUMER_GROUP, switch_consumer_group_retry_proc, empty_proc); + /* timeout */ + ERR_RETRY_FUNC("SQL", OB_TIMEOUT, timeout_proc, timeout_proc); + ERR_RETRY_FUNC("SQL", OB_TRANS_TIMEOUT, timeout_proc, timeout_proc); + ERR_RETRY_FUNC("SQL", OB_TRANS_STMT_TIMEOUT, timeout_proc, timeout_proc); + /* ddl */ diff --git a/src/observer/mysql/ob_query_retry_ctrl.h b/src/observer/mysql/ob_query_retry_ctrl.h index 22665e357d..ab9ae7b2cc 100644 --- a/src/observer/mysql/ob_query_retry_ctrl.h +++ b/src/observer/mysql/ob_query_retry_ctrl.h @@ -299,6 +299,7 @@ private: static void short_wait_retry_proc(ObRetryParam &v); static void force_local_retry_proc(ObRetryParam &v); static void switch_consumer_group_retry_proc(ObRetryParam &v); + static void timeout_proc(ObRetryParam &v); // processors for inner SQL error codes only diff --git a/src/sql/spm/ob_spm_evolution_plan.h b/src/sql/spm/ob_spm_evolution_plan.h index 52bc8e58c9..0e1623c253 100644 --- a/src/sql/spm/ob_spm_evolution_plan.h +++ b/src/sql/spm/ob_spm_evolution_plan.h @@ -72,7 +72,6 @@ public: history_exec_time_(0), is_inited_(false), current_stage_cnt_(0), - evolution_finish_count_(0), lazy_finished_(false), lazy_better_(false) { @@ -152,6 +151,7 @@ private: ObPlanCacheCtx &ctx, ObPhysicalPlan *&plan); int64_t get_baseline_plan_error_cnt(); + int64_t get_plan_finish_cnt(); protected: ObSqlPlanSet *plan_set_; @@ -173,7 +173,6 @@ protected: bool is_evo_best_plan_; int64_t best_plan_cnt_; int64_t current_stage_cnt_; - int64_t evolution_finish_count_; bool lazy_finished_; bool lazy_better_; };