Files
speckle-server/packages/server/modules/shared/redis/redis.ts
T
Gergő Jedlicska 2fdcf1bd1d refactor(shared): unified queue handling (#4691)
* feat(shared): unified queue initialization in shared

* feat(queues): use the new queue creation everywhere

* chore(shared): move to redis module

* chore(shared): fix export maps

* chore(fileimport): add deps properly

* fix(shared): import fix

* fix(everything): moear imports

* fix(server): cjs imports
2025-05-08 16:58:43 +02:00

37 lines
1.3 KiB
TypeScript

import { redisLogger } from '@/observability/logging'
import Redis, { RedisOptions } from 'ioredis'
import {
EnvironmentResourceError,
MisconfiguredEnvironmentError
} from '@/modules/shared/errors'
import { getRedisUrl } from '@/modules/shared/helpers/envHelper'
export function createRedisClient(redisUrl: string, redisOptions: RedisOptions): Redis {
let redisClient: Redis
try {
redisClient = new Redis(redisUrl, redisOptions)
redisClient.on('error', (err) => {
redisLogger.error(err, 'Redis encountered an error.')
if (err instanceof Error) {
throw new EnvironmentResourceError('Redis encountered an error.', err) //FIXME backoff and retry?
}
throw new EnvironmentResourceError('Redis encountered an error.') //FIXME backoff and retry?
})
} catch (err) {
redisLogger.error(err, 'Could not create Redis client')
if (err instanceof Error) {
throw new MisconfiguredEnvironmentError('Unable to connect to Redis.', err) //FIXME backoff and retry?
}
throw new MisconfiguredEnvironmentError('Unable to connect to Redis.') //FIXME backoff and retry?
}
return redisClient
}
let redisClient: Redis | undefined = undefined
export const getGenericRedis = (): Redis => {
if (!redisClient) redisClient = createRedisClient(getRedisUrl(), {})
return redisClient
}