diff --git a/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts index 303cf9cd2182f..cd068cde28587 100644 --- a/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts +++ b/packages/twenty-server/src/engine/core-modules/cache-storage/cache-storage.module-factory.ts @@ -1,13 +1,14 @@ import { type CacheModuleOptions } from '@nestjs/cache-manager'; -import { redisStore } from 'cache-manager-redis-yet'; +import { redisInsStore } from 'cache-manager-redis-yet'; +import { createClient, type RedisClientType } from 'redis'; import { CacheStorageType } from 'src/engine/core-modules/cache-storage/types/cache-storage-type.enum'; import { type TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; -export const cacheStorageModuleFactory = ( +export const cacheStorageModuleFactory = async ( twentyConfigService: TwentyConfigService, -): CacheModuleOptions => { +): Promise => { const cacheStorageType = CacheStorageType.Redis; const cacheStorageTtl = twentyConfigService.get('CACHE_STORAGE_TTL'); const cacheModuleOptions: CacheModuleOptions = { @@ -28,10 +29,27 @@ export const cacheStorageModuleFactory = ( ); } + const redisClient = createClient({ + url: redisUrl, + pingInterval: 30_000, + socket: { + keepAlive: 30_000, + reconnectStrategy: (retries: number) => + Math.min(retries * 200, 5_000), + }, + }); + + redisClient.on('error', (err) => + console.error('Cache Redis client error:', err), + ); + + await redisClient.connect(); + return { ...cacheModuleOptions, - store: redisStore, - url: redisUrl, + store: redisInsStore(redisClient as RedisClientType, { + ttl: cacheStorageTtl * 1000, + }), }; } default: diff --git a/packages/twenty-server/src/engine/core-modules/session-storage/session-storage.module-factory.ts b/packages/twenty-server/src/engine/core-modules/session-storage/session-storage.module-factory.ts index c8aab18e95272..00308f987c38a 100644 --- a/packages/twenty-server/src/engine/core-modules/session-storage/session-storage.module-factory.ts +++ b/packages/twenty-server/src/engine/core-modules/session-storage/session-storage.module-factory.ts @@ -57,11 +57,23 @@ export const getSessionStorageOptions = ( const redisClient = createClient({ url: connectionString, + pingInterval: 30_000, + socket: { + keepAlive: 30_000, + reconnectStrategy: (retries: number) => + Math.min(retries * 200, 5_000), + }, }); - redisClient.connect().catch((err) => { - throw new Error(`Redis connection failed: ${err}`); - }); + redisClient.on('error', (err) => + console.error('Session Redis client error:', err), + ); + + redisClient + .connect() + .catch((err) => + console.error('Session Redis initial connect failed:', err), + ); return { ...sessionStorage,