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;