fix .net reset mysqlconn bug

This commit is contained in:
obdev
2024-02-06 17:57:56 +00:00
committed by ob-robot
parent c32222ebdb
commit fa22c29684

View File

@ -43,9 +43,15 @@ int ObMPResetConnection::process()
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
bool need_disconnect = false; bool need_disconnect = false;
ObSQLSessionInfo *session = NULL; ObSQLSessionInfo *session = NULL;
bool is_proxy_mod = get_conn()->is_proxy_; ObSMConnection *conn = NULL;
ObSchemaGetterGuard schema_guard;
uint64_t tenant_id = OB_INVALID_ID;
const ObSysVariableSchema *sys_variable_schema = NULL;
if (OB_FAIL(get_session(session))) { if (OB_FAIL(get_session(session))) {
LOG_ERROR("get session fail", K(ret)); LOG_ERROR("get session fail", K(ret));
} else if (OB_ISNULL(conn = get_conn())) {
ret = OB_ERR_UNEXPECTED;
LOG_ERROR("null conn", K(ret));
} else if (OB_ISNULL(session)) { } else if (OB_ISNULL(session)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_ERROR("fail to get session info", K(ret), K(session)); LOG_ERROR("fail to get session info", K(ret), K(session));
@ -53,9 +59,24 @@ int ObMPResetConnection::process()
THIS_WORKER.set_session(session); THIS_WORKER.set_session(session);
ObSQLSessionInfo::LockGuard lock_guard(session->get_query_lock()); ObSQLSessionInfo::LockGuard lock_guard(session->get_query_lock());
session->update_last_active_time(); session->update_last_active_time();
tenant_id = session->get_effective_tenant_id();
if (OB_FAIL(ObSqlTransControl::rollback_trans(session, need_disconnect))) { if (OB_FAIL(ObSqlTransControl::rollback_trans(session, need_disconnect))) {
OB_LOG(WARN, "fail to rollback trans for change user", K(ret), K(need_disconnect)); OB_LOG(WARN, "fail to rollback trans for change user", K(ret), K(need_disconnect));
} else if (OB_FAIL(gctx_.schema_service_->get_tenant_schema_guard(tenant_id, schema_guard))) {
OB_LOG(WARN,"fail get schema guard", K(ret));
} else if (OB_FAIL(schema_guard.get_sys_variable_schema(tenant_id, sys_variable_schema))) {
LOG_WARN("get sys variable schema failed", K(ret));
} else if (OB_ISNULL(sys_variable_schema)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("sys variable schema is null", K(ret));
} else if (OB_FAIL(session->load_all_sys_vars(*sys_variable_schema, true))) {
LOG_WARN("load system variables failed", K(ret));
} else if (OB_FAIL(session->update_database_variables(&schema_guard))) {
OB_LOG(WARN, "failed to update database variables", K(ret));
} else if (OB_FAIL(update_proxy_sys_vars(*session))) {
LOG_WARN("update_proxy_sys_vars failed", K(ret));
} else if (OB_FAIL(update_charset_sys_vars(*conn, *session))) {
LOG_WARN("fail to update charset sys vars", K(ret));
} else { } else {
session->clean_status(); session->clean_status();
} }