Skip to content

Commit ef34222

Browse files
authored
fix(agent-core-v2): suppress automatic MCP retry status repeats (#4492)
1 parent ef663a9 commit ef34222

2 files changed

Lines changed: 4 additions & 9 deletions

File tree

‎packages/agent-core-v2/src/mcpCore/connection-manager.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ export class McpConnectionManager implements McpConnectionView {
484484
private transition(entry: InternalEntry, event: McpEntryEvent): void {
485485
const plan = this.planTransition(entry, event);
486486
if (plan === undefined) return;
487+
const automaticRetry = entry.state === 'connecting' && entry.failureStreak > 0;
487488
const before = toPublicEntry(entry);
488489
const fromFamily = entry.state === 'connected' || entry.state === 'probing';
489490
const toFamily = plan.target === 'connected' || plan.target === 'probing';
@@ -570,7 +571,8 @@ export class McpConnectionManager implements McpConnectionView {
570571
break;
571572
}
572573
const after = toPublicEntry(entry);
573-
if (plan.forceEmit === true || !publicEntriesEqual(before, after)) {
574+
const suppressRetryStatus = event.type === 'retryDue' || (automaticRetry && plan.target === 'retryWaiting');
575+
if (!suppressRetryStatus && (plan.forceEmit === true || !publicEntriesEqual(before, after))) {
574576
this.emit(entry);
575577
}
576578
this.scheduleReconcile();

‎packages/agent-core-v2/test/mcpCore/connection-manager.test.ts‎

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -943,9 +943,6 @@ describe('McpConnectionManager', () => {
943943
'pending',
944944
'failed',
945945
'failed',
946-
'pending',
947-
'failed',
948-
'pending',
949946
'connected',
950947
]);
951948
} finally {
@@ -1040,9 +1037,6 @@ describe('McpConnectionManager', () => {
10401037
expect(seen.filter((s) => s.name === 'remote').map((s) => s.status)).toEqual([
10411038
'pending',
10421039
'failed',
1043-
'pending',
1044-
'failed',
1045-
'pending',
10461040
'connected',
10471041
]);
10481042
} finally {
@@ -1409,8 +1403,7 @@ describe('McpConnectionManager', () => {
14091403
expect(cm.resolved('remote')).toBeDefined();
14101404

14111405
const remoteStatuses = seen.filter((s) => s.name === 'remote').map((s) => s.status);
1412-
expect(remoteStatuses.slice(0, 3)).toEqual(['pending', 'connected', 'failed']);
1413-
expect(remoteStatuses.slice(-2)).toEqual(['pending', 'connected']);
1406+
expect(remoteStatuses).toEqual(['pending', 'connected', 'failed', 'connected']);
14141407
} finally {
14151408
await cm.shutdown();
14161409
await closeServer(httpServer);

0 commit comments

Comments
 (0)