Skip to content

Commit b70a5cc

Browse files
author
Andrei Neagu
committed
fix alive key left behind after socket disconnection
1 parent d38a6c3 commit b70a5cc

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

services/web/server/src/simcore_service_webserver/resource_manager/user_sessions.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,19 @@ async def user_pressed_disconnect(self) -> None:
108108

109109
await self._registry.set_key_alive(self._resource_key(), 1)
110110

111-
async def remove_socket_id(self) -> None:
111+
async def remove_socket_id_after_disconnection(self) -> None:
112112
_logger.debug(
113113
"user %s/tab %s removing socket from registry...",
114114
self.user_id,
115115
self.client_session_id,
116116
extra=get_log_record_extra(user_id=self.user_id),
117117
)
118118

119+
# why not remove alive key as well together with all this
119120
await self._registry.remove_resource(self._resource_key(), _SOCKET_ID_FIELDNAME)
120-
await self._registry.set_key_alive(
121-
self._resource_key(), _get_service_deletion_timeout(self.app)
122-
)
121+
# when the tab is closed the alive key is also removed immediately,
122+
# there is no reason to keep it active
123+
await self._registry.set_key_alive(self._resource_key(), 1)
123124

124125
async def set_heartbeat(self) -> None:
125126
"""Extends TTL to avoid expiration of all resources under this session"""

services/web/server/src/simcore_service_webserver/socketio/_handlers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ async def disconnect(socket_id: SocketID, app: web.Application) -> None:
178178
f"{client_session_id=}",
179179
):
180180
with managed_resource(user_id, client_session_id, app) as user_session:
181-
await user_session.remove_socket_id()
181+
await user_session.remove_socket_id_after_disconnection()
182182
# signal same user other clients if available
183183
await emit(
184184
app,
@@ -192,7 +192,7 @@ async def disconnect(socket_id: SocketID, app: web.Application) -> None:
192192
else:
193193
# this should not happen!!
194194
_logger.error(
195-
"Unknown client diconnected sid: %s, session %s",
195+
"Unknown client disconnected sid: %s, session %s",
196196
socket_id,
197197
f"{socketio_session}",
198198
)

services/web/server/tests/unit/with_dbs/01/test_resource_manager_user_sessions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ async def test_users_sessions_resources_registry(
278278
client_session_id = tabs[socket_id]
279279

280280
with managed_resource(user_id, client_session_id, redis_enabled_app) as rt:
281-
await rt.remove_socket_id()
281+
await rt.remove_socket_id_after_disconnection()
282282

283283
num_sockets_for_user = len(await rt.find_socket_ids())
284284
assert num_sockets_for_user == (NUM_SOCKET_IDS - socket - 1)

0 commit comments

Comments
 (0)