From 58996a51f811c54de60eb8d39eae3551caade5c1 Mon Sep 17 00:00:00 2001 From: Jared Miller Date: Sat, 31 Jan 2026 12:00:48 -0500 Subject: [PATCH] Add periodic cleanup for orphaned terminals Every 5 minutes, check for terminals whose sessions have ended but weren't properly disposed. This handles cases where a server crash or network issue prevented normal WebSocket close. --- src/server.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/server.ts b/src/server.ts index 71f7485..8822cbb 100644 --- a/src/server.ts +++ b/src/server.ts @@ -727,4 +727,20 @@ setInterval(() => { // Periodic persistence of dirty session states (every 5s) setInterval(persistDirtySessions, 5000); +// Periodic cleanup for orphaned terminals (every 5 minutes) +// Handles cases where session ended but WebSocket didn't close properly +setInterval( + () => { + for (const [sessionId, termSession] of sessionTerminals.entries()) { + const session = getSession(sessionId); + if (session?.ended_at) { + console.debug(`Cleaning up orphaned terminal for session ${sessionId}`); + disposeTerminal(termSession); + sessionTerminals.delete(sessionId); + } + } + }, + 5 * 60 * 1000, +); + export { server };