From 1723077e5419cb6d64a08690b8f603888c2135cf Mon Sep 17 00:00:00 2001 From: Yijun Zhao Date: Wed, 9 Mar 2022 16:57:49 +0800 Subject: [PATCH] fix reject parallel session create --- query/src/sessions/session_mgr.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/query/src/sessions/session_mgr.rs b/query/src/sessions/session_mgr.rs index 8ec65b68a057..318fb0cd608c 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)) } }