From be39d0a0f11c0274d2be1d7e1579264a95b18f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Fri, 7 Feb 2025 12:06:12 +0100 Subject: [PATCH] fix(core): Add an option to enable dual-stack lookup to support IPv6 for redis (#13118) --- packages/@n8n/config/src/configs/scaling-mode.config.ts | 4 ++++ packages/@n8n/config/test/config.test.ts | 1 + packages/cli/src/services/redis-client.service.ts | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/@n8n/config/src/configs/scaling-mode.config.ts b/packages/@n8n/config/src/configs/scaling-mode.config.ts index f202440a5b..e4331ce9d0 100644 --- a/packages/@n8n/config/src/configs/scaling-mode.config.ts +++ b/packages/@n8n/config/src/configs/scaling-mode.config.ts @@ -52,6 +52,10 @@ class RedisConfig { /** Whether to enable TLS on Redis connections. */ @Env('QUEUE_BULL_REDIS_TLS') tls: boolean = false; + + /** Whether to enable dual-stack hostname resolution for Redis connections. */ + @Env('QUEUE_BULL_REDIS_DUALSTACK') + dualStack: boolean = false; } @Config diff --git a/packages/@n8n/config/test/config.test.ts b/packages/@n8n/config/test/config.test.ts index 1f471b8c72..32952ec60b 100644 --- a/packages/@n8n/config/test/config.test.ts +++ b/packages/@n8n/config/test/config.test.ts @@ -214,6 +214,7 @@ describe('GlobalConfig', () => { username: '', clusterNodes: '', tls: false, + dualStack: false, }, gracefulShutdownTimeout: 30, prefix: 'bull', diff --git a/packages/cli/src/services/redis-client.service.ts b/packages/cli/src/services/redis-client.service.ts index 6dea89a801..e31d55fb6c 100644 --- a/packages/cli/src/services/redis-client.service.ts +++ b/packages/cli/src/services/redis-client.service.ts @@ -131,7 +131,7 @@ export class RedisClientService extends TypedEmitter { } private getOptions({ extraOptions }: { extraOptions?: RedisOptions }) { - const { username, password, db, tls } = this.globalConfig.queue.bull.redis; + const { username, password, db, tls, dualStack } = this.globalConfig.queue.bull.redis; /** * Disabling ready check allows quick reconnection to Redis if Redis becomes @@ -153,6 +153,8 @@ export class RedisClientService extends TypedEmitter { ...extraOptions, }; + if (dualStack) options.family = 0; + if (tls) options.tls = {}; // enable TLS with default Node.js settings return options;