fix perf event lost issue
This commit is contained in:
12
deps/oblib/src/lib/stat/ob_di_cache.cpp
vendored
12
deps/oblib/src/lib/stat/ob_di_cache.cpp
vendored
@ -13,6 +13,7 @@
|
|||||||
#include "lib/stat/ob_di_cache.h"
|
#include "lib/stat/ob_di_cache.h"
|
||||||
#include "lib/random/ob_random.h"
|
#include "lib/random/ob_random.h"
|
||||||
#include "lib/stat/ob_session_stat.h"
|
#include "lib/stat/ob_session_stat.h"
|
||||||
|
#include "lib/ob_lib_config.h"
|
||||||
|
|
||||||
namespace oceanbase
|
namespace oceanbase
|
||||||
{
|
{
|
||||||
@ -220,17 +221,22 @@ ObDIThreadTenantCache::ObDIThreadTenantCache()
|
|||||||
ObDIThreadTenantCache::~ObDIThreadTenantCache()
|
ObDIThreadTenantCache::~ObDIThreadTenantCache()
|
||||||
{
|
{
|
||||||
ObDIGlobalTenantCache::get_instance().unlink(this);
|
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 ObDIThreadTenantCache::get_node(uint64_t tenant_id, ObDITenantCollect *&tenant_collect)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
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_) {
|
if (nullptr == extend_tenant_cache_) {
|
||||||
extend_tenant_cache_ = GET_TSI(ObDIBaseTenantCache<MAX_TENANT_NUM_PER_SERVER>);
|
extend_tenant_cache_ = OB_NEW(ObDIBaseTenantCache<MAX_TENANT_NUM_PER_SERVER>, "di_tenant_cache");
|
||||||
}
|
}
|
||||||
if (nullptr != extend_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) {
|
if (nullptr == tenant_collect) {
|
||||||
ret = OB_TENANT_NOT_EXIST;
|
ret = OB_TENANT_NOT_EXIST;
|
||||||
|
|||||||
1
deps/oblib/src/lib/stat/ob_di_tls.h
vendored
1
deps/oblib/src/lib/stat/ob_di_tls.h
vendored
@ -72,6 +72,7 @@ template <class T, size_t tag>
|
|||||||
ObDITls<T, tag>::~ObDITls()
|
ObDITls<T, tag>::~ObDITls()
|
||||||
{
|
{
|
||||||
if (is_valid()) {
|
if (is_valid()) {
|
||||||
|
lib::ObDisableDiagnoseGuard disable_diagnose_guard;
|
||||||
ob_delete(instance_);
|
ob_delete(instance_);
|
||||||
instance_ = nullptr;
|
instance_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user