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.
This commit is contained in:
parent
22c5c3d102
commit
58996a51f8
1 changed files with 16 additions and 0 deletions
|
|
@ -727,4 +727,20 @@ setInterval(() => {
|
||||||
// Periodic persistence of dirty session states (every 5s)
|
// Periodic persistence of dirty session states (every 5s)
|
||||||
setInterval(persistDirtySessions, 5000);
|
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 };
|
export { server };
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue