Refactor error handling in WorkerService and SDKAgent
- Removed unnecessary logging for aborted sessions in WorkerService. - Simplified the finally block in WorkerService by removing crash recovery logging. - Cleaned up the try-catch structure in SDKAgent's startSession method, removing redundant error handling.
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -747,25 +747,10 @@ export class WorkerService {
|
|||||||
|
|
||||||
session.generatorPromise = this.sdkAgent.startSession(session, this)
|
session.generatorPromise = this.sdkAgent.startSession(session, this)
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
// Only log if not aborted
|
|
||||||
if (session.abortController.signal.aborted) return;
|
|
||||||
|
|
||||||
logger.error('SYSTEM', `Generator failed (${source})`, {
|
|
||||||
sessionId: sid,
|
|
||||||
error: error.message
|
|
||||||
}, error);
|
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
session.generatorPromise = null;
|
session.generatorPromise = null;
|
||||||
this.broadcastProcessingStatus();
|
this.broadcastProcessingStatus();
|
||||||
|
|
||||||
// Crash recovery: if not aborted, check if we should restart
|
|
||||||
if (!session.abortController.signal.aborted) {
|
|
||||||
// We can check if there are pending messages to decide if restart is urgent
|
|
||||||
// But generally, if it crashed, we might want to restart?
|
|
||||||
// For now, let's just log. The user/system can trigger restart if needed.
|
|
||||||
logger.warn('SYSTEM', `Session processor exited unexpectedly`, { sessionId: sid });
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,10 @@ export class SDKAgent {
|
|||||||
* @param worker WorkerService reference for spinner control (optional)
|
* @param worker WorkerService reference for spinner control (optional)
|
||||||
*/
|
*/
|
||||||
async startSession(session: ActiveSession, worker?: any): Promise<void> {
|
async startSession(session: ActiveSession, worker?: any): Promise<void> {
|
||||||
try {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Find Claude executable
|
// Find Claude executable
|
||||||
const claudePath = this.findClaudeExecutable();
|
const claudePath = this.findClaudeExecutable();
|
||||||
|
|
||||||
@@ -183,18 +186,8 @@ export class SDKAgent {
|
|||||||
duration: `${(sessionDuration / 1000).toFixed(1)}s`
|
duration: `${(sessionDuration / 1000).toFixed(1)}s`
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (error: any) {
|
|
||||||
if (error.name === 'AbortError') {
|
|
||||||
logger.warn('SDK', 'Agent aborted', { sessionId: session.sessionDbId });
|
|
||||||
} else {
|
|
||||||
logger.failure('SDK', 'Agent error', { sessionDbId: session.sessionDbId }, error);
|
|
||||||
}
|
|
||||||
throw error;
|
|
||||||
} finally {
|
|
||||||
// NOTE: Do NOT delete session here - SessionRoutes.finally() handles cleanup
|
|
||||||
// and auto-restart logic. Deleting here races with pending work checks.
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create event-driven message generator (yields messages from SessionManager)
|
* Create event-driven message generator (yields messages from SessionManager)
|
||||||
|
|||||||
Reference in New Issue
Block a user