From 2cd1aa4b34cbe43d1898b6a8a89961bc7a94d987 Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Mon, 7 Sep 2026 14:26:29 -0400 Subject: [PATCH] fix(relay): log unreplayable pending connections once per ack, not once per entry --- src/main/runtime/relay/relay-control-origin.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/runtime/relay/relay-control-origin.ts b/src/main/runtime/relay/relay-control-origin.ts index 4145a4b1b6c..6fd97f7f726 100644 --- a/src/main/runtime/relay/relay-control-origin.ts +++ b/src/main/runtime/relay/relay-control-origin.ts @@ -260,18 +260,26 @@ export class RelayControlOrigin { // the phone waits out its attach deadline and is closed as if the host were offline. private replayPendingConnections(ack: RelayHostHelloAckMessage): void { const active = new Set(ack.activeConnIds) + let unreplayable = 0 for (const pending of ack.pendingConns) { if (active.has(pending.connId) || this.transport.hasConnection(pending.connId)) { continue } const message = this.pendingConnectionOpen(pending) if (!message) { - console.warn('[relay] pending connection not replayable: relay stated no kind/device') + unreplayable += 1 continue } // Not remembered: a replay must not extend the observed entry's own life. this.dialConnection(message) } + // One line, not one per entry: a cell that predates the capability states no + // details for any of them, and that is the common case until the fleet rolls. + if (unreplayable > 0) { + console.warn( + `[relay] ${unreplayable} pending connection(s) not replayable: relay stated no kind/device` + ) + } } private pendingConnectionOpen(