diff --git a/services/web/server/src/simcore_service_webserver/resource_manager/user_sessions.py b/services/web/server/src/simcore_service_webserver/resource_manager/user_sessions.py index d78f6e8f56a..3b42cdf792f 100644 --- a/services/web/server/src/simcore_service_webserver/resource_manager/user_sessions.py +++ b/services/web/server/src/simcore_service_webserver/resource_manager/user_sessions.py @@ -108,7 +108,7 @@ async def user_pressed_disconnect(self) -> None: await self._registry.set_key_alive(self._resource_key(), 1) - async def remove_socket_id(self) -> None: + async def remove_socket_id_after_disconnection(self) -> None: _logger.debug( "user %s/tab %s removing socket from registry...", self.user_id, @@ -117,9 +117,9 @@ async def remove_socket_id(self) -> None: ) await self._registry.remove_resource(self._resource_key(), _SOCKET_ID_FIELDNAME) - await self._registry.set_key_alive( - self._resource_key(), _get_service_deletion_timeout(self.app) - ) + # when the tab is closed the alive key is also removed immediately, + # there is no reason to keep it active + await self._registry.set_key_alive(self._resource_key(), 1) async def set_heartbeat(self) -> None: """Extends TTL to avoid expiration of all resources under this session""" diff --git a/services/web/server/src/simcore_service_webserver/socketio/_handlers.py b/services/web/server/src/simcore_service_webserver/socketio/_handlers.py index 356e2cc1ba7..4387b2ae6b9 100644 --- a/services/web/server/src/simcore_service_webserver/socketio/_handlers.py +++ b/services/web/server/src/simcore_service_webserver/socketio/_handlers.py @@ -178,7 +178,7 @@ async def disconnect(socket_id: SocketID, app: web.Application) -> None: f"{client_session_id=}", ): with managed_resource(user_id, client_session_id, app) as user_session: - await user_session.remove_socket_id() + await user_session.remove_socket_id_after_disconnection() # signal same user other clients if available await emit( app, @@ -192,7 +192,7 @@ async def disconnect(socket_id: SocketID, app: web.Application) -> None: else: # this should not happen!! _logger.error( - "Unknown client diconnected sid: %s, session %s", + "Unknown client disconnected sid: %s, session %s", socket_id, f"{socketio_session}", ) diff --git a/services/web/server/tests/unit/with_dbs/01/test_resource_manager_user_sessions.py b/services/web/server/tests/unit/with_dbs/01/test_resource_manager_user_sessions.py index 9e46f5a27f7..5114947b558 100644 --- a/services/web/server/tests/unit/with_dbs/01/test_resource_manager_user_sessions.py +++ b/services/web/server/tests/unit/with_dbs/01/test_resource_manager_user_sessions.py @@ -278,7 +278,7 @@ async def test_users_sessions_resources_registry( client_session_id = tabs[socket_id] with managed_resource(user_id, client_session_id, redis_enabled_app) as rt: - await rt.remove_socket_id() + await rt.remove_socket_id_after_disconnection() num_sockets_for_user = len(await rt.find_socket_ids()) assert num_sockets_for_user == (NUM_SOCKET_IDS - socket - 1)