[CP] #2024111900105209389] fix memory bloat with sql session in reset connection

This commit is contained in:
obdev 2025-01-01 09:45:14 +00:00 committed by ob-robot
parent b3aa344d94
commit 9e99717618
2 changed files with 6 additions and 5 deletions

View File

@ -70,7 +70,7 @@ int ObMPResetConnection::process()
const ObMySQLRawPacket &pkt = reinterpret_cast<const ObMySQLRawPacket&>(req_->get_packet());
session->update_last_active_time();
session->set_query_start_time(ObTimeUtility::current_time());
LOG_DEBUG("begin reset connection. ", K(session->get_sessid()), K(session->get_effective_tenant_id()));
LOG_TRACE("begin reset connection. ", K(session->get_sessid()), K(session->get_effective_tenant_id()));
tenant_id = session->get_effective_tenant_id();
session->set_txn_free_route(pkt.txn_free_route());
if (OB_FAIL(process_extra_info(*session, pkt, need_response_error))) {

View File

@ -360,8 +360,9 @@ int ObBasicSessionInfo::reset_sys_vars()
influence_plan_var_indexs_.reset();
sys_vars_cache_.reset();
sys_var_inc_info_.reset();
sys_var_in_pc_str_.reset();
is_first_gen_ = true;
if (!sys_var_in_pc_str_.empty()) {
sys_var_in_pc_str_.set_length(0);
}
conn_level_name_pool_.reset();
inc_sys_var_alloc1_.reset();
inc_sys_var_alloc2_.reset();
@ -1652,7 +1653,7 @@ int ObBasicSessionInfo::gen_sys_var_in_pc_str()
} else {
buf = sys_var_in_pc_str_.ptr();
MEMSET(buf, 0, sys_var_in_pc_str_.length());
sys_var_in_pc_str_.reset();
sys_var_in_pc_str_.set_length(0);
}
int64_t sys_var_encode_max_size = get_sys_vars_encode_max_size();
if (OB_FAIL(ret)) {
@ -1664,7 +1665,7 @@ int ObBasicSessionInfo::gen_sys_var_in_pc_str()
// expand MAX_SYS_VARS_STR_SIZE 3 times.
for (int64_t i = 0; OB_SUCC(ret) && i < 3; ++i) {
sys_var_encode_max_size = 2 * sys_var_encode_max_size;
if (NULL == (buf = (char *)conn_level_name_pool_.alloc(sys_var_encode_max_size))) {
if (NULL == (buf = (char *)sess_level_name_pool_.alloc(sys_var_encode_max_size))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_WARN("fail to allocator memory", K(ret), K(sys_var_encode_max_size));
} else if (OB_FAIL(sys_vars.serialize_sys_vars(buf, sys_var_encode_max_size, pos))) {