From 700f533a73e70897ee5fe04792658b9b8da491a4 Mon Sep 17 00:00:00 2001 From: obdev Date: Sun, 8 Oct 2023 13:43:13 +0000 Subject: [PATCH] [CP] fix flt control info not tenant isolate in sess level --- src/sql/monitor/flt/ob_flt_control_info_mgr.cpp | 5 ++++- src/sql/monitor/flt/ob_flt_control_info_mgr.h | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sql/monitor/flt/ob_flt_control_info_mgr.cpp b/src/sql/monitor/flt/ob_flt_control_info_mgr.cpp index 591aa0b762..8165e2e70c 100644 --- a/src/sql/monitor/flt/ob_flt_control_info_mgr.cpp +++ b/src/sql/monitor/flt/ob_flt_control_info_mgr.cpp @@ -43,6 +43,9 @@ bool ObFLTResetSessOp::operator()(sql::ObSQLSessionMgr::Key key, ObSQLSessionInf } else { ret = OB_SUCCESS; } + } else if (sess_info->get_effective_tenant_id() != tenant_id_) { + // do nothing + (void)sess_info->unlock_thread_data(); } else if (sess_info->is_coninfo_set_by_sess()) { // already has, do nothing (void)sess_info->unlock_thread_data(); @@ -191,7 +194,7 @@ int ObFLTControlInfoManager::apply_control_info() int ret = OB_SUCCESS; sql::ObSQLSessionMgr *session_mgr = GCTX.session_mgr_; - ObFLTResetSessOp reset_op; + ObFLTResetSessOp reset_op(tenant_id_); if (OB_ISNULL(session_mgr)) { ret = OB_NOT_INIT; SERVER_LOG(WARN, "sessionMgr is NULL", K(ret)); diff --git a/src/sql/monitor/flt/ob_flt_control_info_mgr.h b/src/sql/monitor/flt/ob_flt_control_info_mgr.h index 36668d46a9..d0043c9a4f 100644 --- a/src/sql/monitor/flt/ob_flt_control_info_mgr.h +++ b/src/sql/monitor/flt/ob_flt_control_info_mgr.h @@ -186,8 +186,10 @@ namespace sql struct ObFLTResetSessOp { public: - explicit ObFLTResetSessOp() {} + explicit ObFLTResetSessOp(uint64_t tenant_id) : tenant_id_(tenant_id){} bool operator()(sql::ObSQLSessionMgr::Key key, ObSQLSessionInfo *sess_info); + private: + uint64_t tenant_id_; }; } // namespace sql } // namespace oceanbase