From d3dbf53d0b92b1adbd3cdb55a500eee3a7fe0028 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sun, 22 Jan 2023 11:04:15 -0500 Subject: [PATCH] chore: Add insurance rate limiter for when Redis is down/reconnecting --- server/utils/RateLimiter.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/server/utils/RateLimiter.ts b/server/utils/RateLimiter.ts index 9aa6a2e16..f18eb5175 100644 --- a/server/utils/RateLimiter.ts +++ b/server/utils/RateLimiter.ts @@ -1,6 +1,7 @@ import { IRateLimiterStoreOptions, RateLimiterRedis, + RateLimiterMemory, } from "rate-limiter-flexible"; import env from "@server/env"; import Redis from "@server/redis"; @@ -14,11 +15,17 @@ export default class RateLimiter { static readonly rateLimiterMap = new Map(); + static readonly insuranceRateLimiter = new RateLimiterMemory({ + points: env.RATE_LIMITER_REQUESTS, + duration: env.RATE_LIMITER_DURATION_WINDOW, + }); + static readonly defaultRateLimiter = new RateLimiterRedis({ storeClient: Redis.defaultClient, points: env.RATE_LIMITER_REQUESTS, duration: env.RATE_LIMITER_DURATION_WINDOW, keyPrefix: this.RATE_LIMITER_REDIS_KEY_PREFIX, + insuranceLimiter: this.insuranceRateLimiter, }); static getRateLimiter(path: string): RateLimiterRedis {