diff --git a/query/src/sessions/session_mgr.rs b/query/src/sessions/session_mgr.rs index 8ec65b68a0575..318fb0cd608cf 100644 --- a/query/src/sessions/session_mgr.rs +++ b/query/src/sessions/session_mgr.rs @@ -125,11 +125,9 @@ impl SessionManager { } pub async fn create_session(self: &Arc, typ: impl Into) -> Result { - let total_sessions = { - let sessions = self.active_sessions.read().await; - sessions.len() - }; - match total_sessions == self.max_sessions { + let mut sessions = self.active_sessions.write().await; + + match sessions.len() == self.max_sessions { true => Err(ErrorCode::TooManyUserConnections( "The current accept connection has exceeded mysql_handler_thread_num config", )), @@ -148,10 +146,8 @@ impl SessionManager { &self.conf.query.cluster_id, ); - { - let mut sessions = self.active_sessions.write().await; - sessions.insert(session.get_id(), session.clone()); - } + sessions.insert(session.get_id(), session.clone()); + Ok(SessionRef::create(session)) } }