From 47ea6ae8d395a540a12790b69d731860e9bec70a Mon Sep 17 00:00:00 2001 From: Ajay Date: Sun, 21 Apr 2024 13:38:32 -0400 Subject: [PATCH] Only check request time for readiness if cache has filled up --- src/config.ts | 3 ++- src/routes/getReady.ts | 8 +++++--- src/types/config.model.ts | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/config.ts b/src/config.ts index a490aac..83e2fa1 100644 --- a/src/config.ts +++ b/src/config.ts @@ -194,7 +194,8 @@ addDefaults(config, { deArrowPaywall: false, useCacheForSegmentGroups: false, maxConnections: 100, - maxResponseTime: 1000 + maxResponseTime: 1000, + maxResponseTimeWhileLoadingCache: 2000 }); loadFromEnv(config); migrate(config); diff --git a/src/routes/getReady.ts b/src/routes/getReady.ts index 6611e69..acc469c 100644 --- a/src/routes/getReady.ts +++ b/src/routes/getReady.ts @@ -14,9 +14,11 @@ export async function getReady(req: Request, res: Response, server: Server): Pro if (!connections || (connections < config.maxConnections && (!config.redis || redisStats.activeRequests < config.redis.maxConnections * 0.8) - && (!config.redis || redisStats.avgReadTime < config.maxResponseTime || redisStats.activeRequests < 1) - && (!config.postgres || postgresStats.activeRequests < config.postgres.maxActiveRequests * 0.8)) - && (!config.postgres || postgresStats.avgReadTime < config.maxResponseTime)) { + && (!config.redis || redisStats.activeRequests < 1 || redisStats.avgReadTime < config.maxResponseTime + || (redisStats.memoryCacheSize < config.redis.clientCacheSize * 0.8 && redisStats.avgReadTime < config.maxResponseTimeWhileLoadingCache)) + && (!config.postgres || postgresStats.activeRequests < config.postgres.maxActiveRequests * 0.8) + && (!config.postgres || postgresStats.avgReadTime < config.maxResponseTime + || (redisStats.memoryCacheSize < config.redis.clientCacheSize * 0.8 && postgresStats.avgReadTime < config.maxResponseTimeWhileLoadingCache)))) { return res.sendStatus(200); } else { return res.sendStatus(500); diff --git a/src/types/config.model.ts b/src/types/config.model.ts index 041c6fa..da33810 100644 --- a/src/types/config.model.ts +++ b/src/types/config.model.ts @@ -107,6 +107,8 @@ export interface SBSConfig { deArrowPaywall: boolean, useCacheForSegmentGroups: boolean maxConnections: number; + maxResponseTime: number; + maxResponseTimeWhileLoadingCache: number; } export interface WebhookConfig {