Browse Source

feat: auto clean session with session close called. (#1990)

* feat: auto clean session with session close called.

* fix: lint

* fix: lint

* fix: lint

---------

Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: Xingyao Wang <xingyao6@illinois.edu>
Aaron Xia 1 year ago
parent
commit
b66a915de1
1 changed files with 7 additions and 2 deletions
  1. 7 2
      opendevin/server/session/manager.py

+ 7 - 2
opendevin/server/session/manager.py

@@ -1,5 +1,6 @@
 import asyncio
 import time
+from typing import Optional
 
 from fastapi import WebSocket
 
@@ -54,7 +55,11 @@ class SessionManager:
                     session_ids_to_remove.append(sid)
 
             for sid in session_ids_to_remove:
-                del self._sessions[sid]
-                logger.info(f'Session {sid} has been removed due to inactivity.')
+                to_del_session: Optional[Session] = self._sessions.pop(sid, None)
+                if to_del_session is not None:
+                    await to_del_session.close()
+                    logger.info(
+                        f'Session {sid} and related resource have been removed due to inactivity.'
+                    )
 
             await asyncio.sleep(self.cleanup_interval)