diff options
| author | Adam Malczewski <[email protected]> | 2026-06-28 12:31:18 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-28 12:31:18 +0900 |
| commit | d09a4f8ae041536dc7d37a384971058248d7b995 (patch) | |
| tree | 25745f2443699f257eef5d61ab10f33fe60f10a4 /packaging/[email protected] | |
| parent | e3a85ab476cdfaa49982078aba3b6792331185cb (diff) | |
| download | dispatch-d09a4f8ae041536dc7d37a384971058248d7b995.tar.gz dispatch-d09a4f8ae041536dc7d37a384971058248d7b995.zip | |
fix(ssh,host-bin): permanent pooled-client error listener + uncaughtException/unhandledRejection guards
Root cause of the live production crash (exit-1 'Timed out while waiting for
handshake'): the pooled ssh2.Client had no permanent 'error' listener after
connect, so a post-connect ssh2 error escaped as an uncaught EventEmitter
'error' with no process-level guard. See notes/crash-investigation-findings.md ยง1.
- packages/ssh/src/pool.ts: attach a permanent 'error' listener to the pooled
client in buildConnection that sets state=error, logs (alias, message, level),
and does not throw; cleanup() no longer removes it.
- packages/host-bin/src/main.ts: add process.on('uncaughtException') (graceful
shutdown after logging) and process.on('unhandledRejection') (log + continue),
both logging message/stack, memory snapshot, activeConversations count, and
timestamp so the failure site is observable.
Diffstat (limited to 'packaging/[email protected]')
0 files changed, 0 insertions, 0 deletions
