From af7d6e68d0436ff8a3d4e8410dc8ee4f3a035c44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Mon, 11 Nov 2024 11:30:57 +0100 Subject: [PATCH] fix(core): Handle websocket connection error more gracefully in task runners (#11635) --- packages/@n8n/task-runner/src/task-runner.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/@n8n/task-runner/src/task-runner.ts b/packages/@n8n/task-runner/src/task-runner.ts index 4bd8661daa..d1bf8a6d71 100644 --- a/packages/@n8n/task-runner/src/task-runner.ts +++ b/packages/@n8n/task-runner/src/task-runner.ts @@ -1,4 +1,4 @@ -import { ApplicationError } from 'n8n-workflow'; +import { ApplicationError, ensureError } from 'n8n-workflow'; import { nanoid } from 'nanoid'; import { type MessageEvent, WebSocket } from 'ws'; @@ -88,6 +88,24 @@ export abstract class TaskRunner { }, maxPayload: opts.maxPayloadSize, }); + + this.ws.addEventListener('error', (event) => { + const error = ensureError(event.error); + + if ( + 'code' in error && + typeof error.code === 'string' && + ['ECONNREFUSED', 'ENOTFOUND'].some((code) => code === error.code) + ) { + console.error( + `Error: Failed to connect to n8n. Please ensure n8n is reachable at: ${opts.n8nUri}`, + ); + process.exit(1); + } else { + console.error(`Error: Failed to connect to n8n at ${opts.n8nUri}`); + console.error('Details:', event.message || 'Unknown error'); + } + }); this.ws.addEventListener('message', this.receiveMessage); this.ws.addEventListener('close', this.stopTaskOffers); }