fix(pty): retry failed lifecycle closes

This commit is contained in:
Tianyi Cui
2026-07-23 02:14:15 +08:00
parent 7887391afe
commit db68a90f41
6 changed files with 21 additions and 8 deletions

View File

@@ -457,8 +457,14 @@ export class PtyService extends Service {
const results = await Promise.allSettled(records.map(async (record) => {
const closing = record.closing ?? record.session.close(reason)
record.closing = closing
await closing
this.sessions.delete(record.id)
try {
await closing
this.sessions.delete(record.id)
} catch (error: unknown) {
// A concurrent retry may already own a newer fence; never clear it.
if (record.closing === closing) record.closing = undefined
throw error
}
}))
const failures = results
.filter((result): result is PromiseRejectedResult => result.status === 'rejected')