Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/metrics/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -357,4 +357,9 @@ export const metrics = new Metrics(() => ({
help: 'The number of addresses in PoR request input parameters',
labelNames: ['feed_id'] as const,
}),
wsConnectionFailoverCount: new client.Gauge({
name: 'ws_connection_failover_count',
help: 'The number of consecutive unresponsive connection detections (no data for WS_SUBSCRIPTION_UNRESPONSIVE_TTL), used to trigger URL failover',
labelNames: ['transport_name'] as const,
}),
}))
13 changes: 8 additions & 5 deletions src/transports/websocket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -414,9 +414,13 @@ export class WebSocketTransport<
// to determine minimum TTL of an open connection given no explicit connection errors.
if (connectionUnresponsive) {
this.streamHandlerInvocationsWithNoConnection += 1
logger.trace(
`The connection is unresponsive, incremented streamHandlerIterationsWithNoConnection = ${this.streamHandlerInvocationsWithNoConnection}`,
logger.info(
`The connection is unresponsive (last message ${timeSinceLastMessage}ms ago), incremented failover counter to ${this.streamHandlerInvocationsWithNoConnection}`,
)
metrics
.get('wsConnectionFailoverCount')
.labels({ transport_name: this.name })
.set(this.streamHandlerInvocationsWithNoConnection)
}

// We want to check if the URL we calculate is different from the one currently connected.
Expand All @@ -431,10 +435,9 @@ export class WebSocketTransport<
// Check if we should close the current connection
if (!connectionClosed && (urlChanged || connectionUnresponsive)) {
if (urlChanged) {
logger.info('Websocket URL has changed, closing connection to reconnect...')
censorLogs(() =>
logger.debug(
`Websocket url has changed from ${this.currentUrl} to ${urlFromConfig}, closing connection...`,
),
logger.debug(`Websocket URL changed from ${this.currentUrl} to ${urlFromConfig}`),
)
} else {
censorLogs(() =>
Expand Down
Loading