fix(agent): Eliminate race condition in completion handling
PROBLEM: - Agents completing with questions were incorrectly marked as "crashed" - Race condition: polling handler AND crash handler both called handleCompletion() - Caused database corruption and lost pending questions SOLUTION: - Add completion mutex in OutputHandler to prevent concurrent processing - Remove duplicate completion call from crash handler - Only one handler executes completion logic per agent TESTING: - Added mutex-completion.test.ts with 4 test cases - Verified mutex prevents concurrent access - Verified lock cleanup on exceptions - Verified different agents can process concurrently FIXES: residential-cuckoo and 12+ other agents stuck in crashed state
This commit is contained in:
@@ -389,6 +389,7 @@ describe('ProcessManager', () => {
|
||||
payload: {
|
||||
processId: 'proc-1',
|
||||
pid: 12345,
|
||||
exitCode: 1,
|
||||
signal: 'SIGTERM',
|
||||
},
|
||||
})
|
||||
|
||||
@@ -124,6 +124,7 @@ export class ProcessManager {
|
||||
payload: {
|
||||
processId: id,
|
||||
pid,
|
||||
exitCode: code,
|
||||
signal,
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user