From 1b5bedc1d0330f0d639dafefeea41d86f95db914 Mon Sep 17 00:00:00 2001 From: dakkar Date: Mon, 19 Aug 2024 19:13:37 +0100 Subject: [PATCH 1/2] thunk the min/max promises this prevents generating promises we don't use, which would get logged by the node vm and spam the logs --- .../backend/src/server/api/RateLimiterService.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/backend/src/server/api/RateLimiterService.ts b/packages/backend/src/server/api/RateLimiterService.ts index 52d73baa0a..a30cb2d47d 100644 --- a/packages/backend/src/server/api/RateLimiterService.ts +++ b/packages/backend/src/server/api/RateLimiterService.ts @@ -38,7 +38,7 @@ export class RateLimiterService { } // Short-term limit - const min = new Promise((ok, reject) => { + const minP = () => { return new Promise((ok, reject) => { const minIntervalLimiter = new Limiter({ id: `${actor}:${limitation.key}:min`, duration: limitation.minInterval! * factor, @@ -57,16 +57,16 @@ export class RateLimiterService { return reject({ code: 'BRIEF_REQUEST_INTERVAL', info }); } else { if (hasLongTermLimit) { - return max.then(ok, reject); + return maxP().then(ok, reject); } else { return ok(); } } }); - }); + }) }; // Long term limit - const max = new Promise((ok, reject) => { + const maxP = () => { return new Promise((ok, reject) => { const limiter = new Limiter({ id: `${actor}:${limitation.key}`, duration: limitation.duration! * factor, @@ -87,7 +87,7 @@ export class RateLimiterService { return ok(); } }); - }); + }) }; const hasShortTermLimit = typeof limitation.minInterval === 'number'; @@ -96,9 +96,9 @@ export class RateLimiterService { typeof limitation.max === 'number'; if (hasShortTermLimit) { - return min; + return minP(); } else if (hasLongTermLimit) { - return max; + return maxP(); } else { return Promise.resolve(); } From 17b6c1b3710c2db317ed52cdbc6ac804d56ea5f6 Mon Sep 17 00:00:00 2001 From: dakkar Date: Thu, 22 Aug 2024 13:55:22 +0100 Subject: [PATCH 2/2] tell the linter to shut up, this time --- .../backend/src/server/api/RateLimiterService.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/server/api/RateLimiterService.ts b/packages/backend/src/server/api/RateLimiterService.ts index a30cb2d47d..e94160a657 100644 --- a/packages/backend/src/server/api/RateLimiterService.ts +++ b/packages/backend/src/server/api/RateLimiterService.ts @@ -37,7 +37,12 @@ export class RateLimiterService { return Promise.resolve(); } + // those lines with the "wrong" brace style / indentation are + // done that way so that the *other* lines stay identical to + // Misskey, simplifying merges + // Short-term limit + // eslint-disable-next-line brace-style const minP = () => { return new Promise((ok, reject) => { const minIntervalLimiter = new Limiter({ id: `${actor}:${limitation.key}:min`, @@ -63,9 +68,11 @@ export class RateLimiterService { } } }); - }) }; + // eslint-disable-next-line brace-style + }); }; // Long term limit + // eslint-disable-next-line brace-style const maxP = () => { return new Promise((ok, reject) => { const limiter = new Limiter({ id: `${actor}:${limitation.key}`, @@ -87,7 +94,8 @@ export class RateLimiterService { return ok(); } }); - }) }; + // eslint-disable-next-line brace-style + }); }; const hasShortTermLimit = typeof limitation.minInterval === 'number';