diff --git a/deps/oblib/src/lib/stat/ob_di_cache.cpp b/deps/oblib/src/lib/stat/ob_di_cache.cpp index bdb4968ac0..989f5ca9b7 100644 --- a/deps/oblib/src/lib/stat/ob_di_cache.cpp +++ b/deps/oblib/src/lib/stat/ob_di_cache.cpp @@ -13,6 +13,7 @@ #include "lib/stat/ob_di_cache.h" #include "lib/random/ob_random.h" #include "lib/stat/ob_session_stat.h" +#include "lib/ob_lib_config.h" namespace oceanbase { @@ -220,17 +221,22 @@ ObDIThreadTenantCache::ObDIThreadTenantCache() ObDIThreadTenantCache::~ObDIThreadTenantCache() { ObDIGlobalTenantCache::get_instance().unlink(this); + lib::ObDisableDiagnoseGuard disable_diagnose_guard; + if (extend_tenant_cache_ != nullptr) { + ob_delete(extend_tenant_cache_); + extend_tenant_cache_ = nullptr; + } } int ObDIThreadTenantCache::get_node(uint64_t tenant_id, ObDITenantCollect *&tenant_collect) { int ret = OB_SUCCESS; - if (OB_ISNULL(tenant_collect = tenant_cache_.get_node(tenant_id, tenant_collect))) { + if (OB_ISNULL(tenant_collect = tenant_cache_.get_node(tenant_id))) { if (nullptr == extend_tenant_cache_) { - extend_tenant_cache_ = GET_TSI(ObDIBaseTenantCache); + extend_tenant_cache_ = OB_NEW(ObDIBaseTenantCache, "di_tenant_cache"); } if (nullptr != extend_tenant_cache_) { - tenant_collect = extend_tenant_cache_->get_node(tenant_id, tenant_collect); + tenant_collect = extend_tenant_cache_->get_node(tenant_id, true /*replace*/); } if (nullptr == tenant_collect) { ret = OB_TENANT_NOT_EXIST; diff --git a/deps/oblib/src/lib/stat/ob_di_tls.h b/deps/oblib/src/lib/stat/ob_di_tls.h index 358642a046..c19737f84f 100644 --- a/deps/oblib/src/lib/stat/ob_di_tls.h +++ b/deps/oblib/src/lib/stat/ob_di_tls.h @@ -72,6 +72,7 @@ template ObDITls::~ObDITls() { if (is_valid()) { + lib::ObDisableDiagnoseGuard disable_diagnose_guard; ob_delete(instance_); instance_ = nullptr; }