From 38e550af39d83277d9f0efc51f55c73966eb862a Mon Sep 17 00:00:00 2001 From: Charlie Lamb Date: Fri, 24 Apr 2026 10:32:45 +0100 Subject: [PATCH] chore: add redis v2 health check --- .../redis/initUtils/redisV2Availability.ts | 29 +++++++++++++++++-- server/src/honoUtils/handleReadyCheck.ts | 3 ++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/server/src/external/redis/initUtils/redisV2Availability.ts b/server/src/external/redis/initUtils/redisV2Availability.ts index 51c696ec3..9f1a0ca74 100644 --- a/server/src/external/redis/initUtils/redisV2Availability.ts +++ b/server/src/external/redis/initUtils/redisV2Availability.ts @@ -2,17 +2,34 @@ import { hasRedisV2Config, redisV2, } from "../initRedisV2.js"; -import { createRedisAvailability } from "./createRedisAvailability.js"; -import { shouldUseRedis } from "./redisAvailability.js"; +import { + createRedisAvailability, + type RedisAvailabilitySnapshot, +} from "./createRedisAvailability.js"; +import { + getRedisAvailability, + shouldUseRedis, +} from "./redisAvailability.js"; import { redis as primaryRedis } from "./redisClientRegistry.js"; const usesPrimaryRedis = redisV2 === primaryRedis; const noop = () => {}; +const getPrimaryBackedRedisV2Availability = (): RedisAvailabilitySnapshot => { + const availability = getRedisAvailability(); + + return { + configured: hasRedisV2Config, + state: availability.state, + status: availability.status, + }; +}; + const redisV2Availability = usesPrimaryRedis ? { startMonitor: noop, stopMonitor: noop, shouldUseRedis, + getRedisAvailability: getPrimaryBackedRedisV2Availability, } : createRedisAvailability({ redis: redisV2, @@ -25,6 +42,12 @@ const { startMonitor: startRedisV2Monitor, stopMonitor: stopRedisV2Monitor, shouldUseRedis: shouldUseRedisV2, + getRedisAvailability: getRedisV2Availability, } = redisV2Availability; -export { startRedisV2Monitor, stopRedisV2Monitor, shouldUseRedisV2 }; +export { + getRedisV2Availability, + startRedisV2Monitor, + stopRedisV2Monitor, + shouldUseRedisV2, +}; diff --git a/server/src/honoUtils/handleReadyCheck.ts b/server/src/honoUtils/handleReadyCheck.ts index a3dca3cdd..86845bed8 100644 --- a/server/src/honoUtils/handleReadyCheck.ts +++ b/server/src/honoUtils/handleReadyCheck.ts @@ -3,6 +3,7 @@ import type { Context } from "hono"; import { clientCritical } from "@/db/initDrizzle.js"; import { getPgHealthState } from "@/db/pgHealthMonitor.js"; import { getRedisAvailability } from "@/external/redis/initRedis.js"; +import { getRedisV2Availability } from "@/external/redis/initUtils/redisV2Availability.js"; import type { HonoEnv } from "./HonoEnv.js"; const POSTGRES_TIMEOUT_MS = 1_000; @@ -45,6 +46,7 @@ export const handleReadyCheck = async (c: Context) => { const postgres = await checkPostgresReady(); const redis = getRedisAvailability(); + const redisV2 = getRedisV2Availability(); const ok = postgres.ok; const status = ok ? 200 : 503; @@ -54,6 +56,7 @@ export const handleReadyCheck = async (c: Context) => { checks: { postgres, redis, + redisV2, }, }, status,