fix(KB-172): fix terminal session leak with activity tracking and stale eviction

- Add session activity tracking (lastActivityAt) to TerminalService
- Implement stale session eviction when approaching session limits
- Fix WebSocket close handler to properly kill PTY sessions on disconnect
- Add lastActivityAt to session listing endpoint for observability
- Add comprehensive tests for activity tracking, eviction, and terminal routes
- Add changeset for patch release
This commit is contained in:
gsxdsm
2026-03-30 12:11:12 -07:00
parent 6631148ea9
commit 576ddb07a0
6 changed files with 423 additions and 2 deletions

View File

@@ -317,6 +317,12 @@ export function setupTerminalWebSocket(
clearInterval(pingInterval);
if (dataUnsub) dataUnsub();
if (exitUnsub) exitUnsub();
// Kill the PTY session to prevent session leaks
try {
terminalService.killSession(sessionId);
} catch {
// Ignore errors during cleanup — session may already be dead
}
});
ws.on("error", () => {
@@ -324,6 +330,12 @@ export function setupTerminalWebSocket(
clearInterval(pingInterval);
if (dataUnsub) dataUnsub();
if (exitUnsub) exitUnsub();
// Kill the PTY session to prevent session leaks
try {
terminalService.killSession(sessionId);
} catch {
// Ignore errors during cleanup — session may already be dead
}
});
});