提交 edd206c0 编写于 作者: O obdev 提交者: wangzelin.wzl

[CP] [CP] Fix psSessionInfo memory not being released in time

上级 19caf206
...@@ -402,6 +402,7 @@ int ObSQLSessionInfo::close_all_ps_stmt() ...@@ -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() ...@@ -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 plan cache"); LOG_WARN("failed to get ps pl an cache");
} else {
ps_session_info_allocator_.set_attr(mem_attr);
} }
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册