chore: add redis v2 health check

This commit is contained in:
Charlie Lamb
2026-04-24 10:32:45 +01:00
parent 82d0a03fb3
commit 38e550af39
2 changed files with 29 additions and 3 deletions

View File

@@ -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,
};

View File

@@ -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<HonoEnv>) => {
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<HonoEnv>) => {
checks: {
postgres,
redis,
redisV2,
},
},
status,