chore: add redis v2 health check
This commit is contained in:
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user