[CP] [CP] Fix psSessionInfo memory not being released in time
This commit is contained in:
@ -402,6 +402,7 @@ int ObSQLSessionInfo::close_all_ps_stmt()
|
|||||||
iter->second = NULL;
|
iter->second = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ps_session_info_allocator_.reset();
|
||||||
ps_session_info_map_.reuse();
|
ps_session_info_map_.reuse();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -663,14 +664,21 @@ ObPsCache* ObSQLSessionInfo::get_ps_cache()
|
|||||||
if (NULL != ps_cache_) {
|
if (NULL != ps_cache_) {
|
||||||
ps_cache_->dec_ref_count();
|
ps_cache_->dec_ref_count();
|
||||||
}
|
}
|
||||||
|
const uint64_t tenant_id = lib::current_resource_owner_id();
|
||||||
ObPCMemPctConf pc_mem_conf;
|
ObPCMemPctConf pc_mem_conf;
|
||||||
|
ObMemAttr mem_attr;
|
||||||
|
mem_attr.label_ = "PsSessionInfo";
|
||||||
|
mem_attr.tenant_id_ = tenant_id;
|
||||||
|
mem_attr.ctx_id_ = ObCtxIds::DEFAULT_CTX_ID;
|
||||||
if (OB_FAIL(get_pc_mem_conf(pc_mem_conf))) {
|
if (OB_FAIL(get_pc_mem_conf(pc_mem_conf))) {
|
||||||
LOG_ERROR("failed to get pc mem conf");
|
LOG_ERROR("failed to get pc mem conf");
|
||||||
ps_cache_ = NULL;
|
ps_cache_ = NULL;
|
||||||
} else {
|
} else {
|
||||||
ps_cache_ = plan_cache_manager_->get_or_create_ps_cache(lib::current_resource_owner_id(), pc_mem_conf);
|
ps_cache_ = plan_cache_manager_->get_or_create_ps_cache(tenant_id, pc_mem_conf);
|
||||||
if (OB_ISNULL(ps_cache_)) {
|
if (OB_ISNULL(ps_cache_)) {
|
||||||
LOG_WARN("failed to get ps pl an cache");
|
LOG_WARN("failed to get ps pl an cache");
|
||||||
|
} else {
|
||||||
|
ps_session_info_allocator_.set_attr(mem_attr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user