From 9e0004bd4a95c7f5f35f3178483325f95ab7b4b9 Mon Sep 17 00:00:00 2001 From: garrrikkotua Date: Mon, 2 Oct 2023 15:03:09 +0300 Subject: [PATCH] randomize sleep time in concurent request limiter --- services/libs/redis/src/rateLimiter.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/libs/redis/src/rateLimiter.ts b/services/libs/redis/src/rateLimiter.ts index b712b7b85e..87b8169cff 100644 --- a/services/libs/redis/src/rateLimiter.ts +++ b/services/libs/redis/src/rateLimiter.ts @@ -49,7 +49,8 @@ export class ConcurrentRequestLimiter implements IConcurrentRequestLimiter { if (!canMakeRequest) { if (retries > 0) { - await timeout(sleepTimeMs) + const randomizedSleepTime = sleepTimeMs + Math.floor(Math.random() * sleepTimeMs) + await timeout(randomizedSleepTime) return this.checkConcurrentRequestLimit(integrationId, retries - 1, sleepTimeMs) } else { throw new Error(`Too many concurrent requests for integration ${integrationId}`)