From c866b6769a99c58aaafa7edac5adcfe392d98b7f Mon Sep 17 00:00:00 2001 From: a1iive Date: Thu, 2 Nov 2023 08:39:37 +0000 Subject: [PATCH] check all dag nets when ls offline --- .../scheduler/ob_tenant_dag_scheduler.cpp | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/share/scheduler/ob_tenant_dag_scheduler.cpp b/src/share/scheduler/ob_tenant_dag_scheduler.cpp index 831b58fd2d..327a070fbb 100755 --- a/src/share/scheduler/ob_tenant_dag_scheduler.cpp +++ b/src/share/scheduler/ob_tenant_dag_scheduler.cpp @@ -3723,21 +3723,25 @@ int ObDagNetScheduler::check_ls_compaction_dag_exist_with_cancel(const ObLSID &l int ret = OB_SUCCESS; exist = false; ObMutexGuard dag_net_guard(dag_net_map_lock_); - ObIDagNet *head = blocking_dag_net_list_.get_header(); - ObIDagNet *cur = head->get_next(); int64_t cancel_dag_cnt = 0; - while (nullptr != cur && head != cur) { - if (cur->is_co_dag_net()) { - compaction::ObCOMergeDagNet *co_dag_net = static_cast(cur); + ObIDagNet *cur_dag_net = nullptr; + DagNetMap::iterator iter = dag_net_map_.begin(); + for (; OB_SUCC(ret) && iter != dag_net_map_.end(); ++iter) { + if (OB_ISNULL(cur_dag_net = iter->second)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("dag net is unepxected null", K(ret), KP(cur_dag_net)); + } else if (cur_dag_net->is_co_dag_net()) { + compaction::ObCOMergeDagNet *co_dag_net = static_cast(cur_dag_net); if (ls_id == co_dag_net->get_dag_param().ls_id_) { - cur->set_cancel(); + cur_dag_net->set_cancel(); ++cancel_dag_cnt; exist = true; } } - cur = cur->get_next(); } // end of while - LOG_INFO("success to cancel dag net", KR(ret), K(ls_id), K(cancel_dag_cnt), K(exist)); + if (OB_SUCC(ret)) { + LOG_INFO("success to cancel dag net", KR(ret), K(ls_id), K(cancel_dag_cnt), K(exist)); + } return ret; } /***************************************ObTenantDagScheduler impl********************************************/