From c6a6a4d6943bed8397fede184dd8610e7c9df114 Mon Sep 17 00:00:00 2001 From: Thibaut R Date: Sun, 2 Jun 2024 11:58:31 +0200 Subject: [PATCH] Updated Sentinel options to ensure failoverDetector and sentinel retry strategy --- .../opencti-graphql/src/database/redis.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/opencti-platform/opencti-graphql/src/database/redis.ts b/opencti-platform/opencti-graphql/src/database/redis.ts index 8b8b3ea60ebf..3a4e7805dd34 100644 --- a/opencti-platform/opencti-graphql/src/database/redis.ts +++ b/opencti-platform/opencti-graphql/src/database/redis.ts @@ -107,15 +107,13 @@ const sentinelOptions = async (clusterNodes: Partial[]): Promis preferredSlaves: conf.get('redis:sentinel_preferred_slaves'), sentinels: clusterNodes, enableTLSForSentinelMode: conf.get('redis:sentinel_tls') ?? false, + failoverDetector: true, + sentinelRetryStrategy: (times: number) => { + return Math.min(times * 10, 1000); + } }; }; -export const reconnectOnError = (error: any) => { - const targetError = 'READONLY'; - // Only reconnect when the error starts with "READONLY" - return error.message.slice(0, targetError.length) === targetError; -}; - export const createRedisClient = async (provider: string, autoReconnect = false): Promise => { let client: Cluster | Redis; const redisMode: string = conf.get('redis:mode'); @@ -126,10 +124,10 @@ export const createRedisClient = async (provider: string, autoReconnect = false) client = new Redis.Cluster(clusterNodes, clusterOpts); } else if (redisMode === 'sentinel') { const sentinelOpts = await sentinelOptions(clusterNodes); - client = new Redis({ ...sentinelOpts, reconnectOnError }); + client = new Redis(sentinelOpts); } else { const singleOptions = await redisOptions(autoReconnect); - client = new Redis({ ...singleOptions, port: conf.get('redis:port'), host: conf.get('redis:hostname'), reconnectOnError }); + client = new Redis({ ...singleOptions, port: conf.get('redis:port'), host: conf.get('redis:hostname') }); } client.on('close', () => logApp.info(`[REDIS] Redis '${provider}' client closed`));