From 13b72199c09eb1025e34271ee502421d9c2df00b Mon Sep 17 00:00:00 2001 From: Tim O'Farrell Date: Thu, 21 Nov 2024 14:58:50 -0700 Subject: [PATCH] WIP --- openhands/server/session/manager.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/openhands/server/session/manager.py b/openhands/server/session/manager.py index 0b96408b97b1..76443bc4f415 100644 --- a/openhands/server/session/manager.py +++ b/openhands/server/session/manager.py @@ -62,7 +62,7 @@ async def _redis_subscribe(self): elif message_type == "restart": connection_id = data["connection_id"] if self.local_connection_id_to_session_id.get(connection_id) == sid: - self.init_or_join_session(sid, connection_id, data["settings"]) + await self.init_or_join_session(sid, connection_id, data["settings"]) except asyncio.CancelledError: return except: @@ -175,14 +175,21 @@ async def _close_orphaned_session(self, session: Session, force: bool): if redis_client: key = _CONNECTION_KEY.format(sid=session.sid) redis_connections = await redis_client.lrange(key, 0, -1) + redis_connections = [ + c.decode() for c in redis_connections + ] if not redis_connections: await redis_client.delete(key) - + redis_connections = [ + c for c in redis_connections + if c not in self.local_connection_id_to_session_id + ] + if force and redis_connections: await redis_client.publish("oh_event", json.dumps({ "sid": session.sid, "message_type": "restart", - "connection_id": redis_connections[0].decode(), + "connection_id": redis_connections[0], "settings": session.settings, }))