1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-05 17:53:12 +02:00

fix: types

This commit is contained in:
Fredrik Oseberg 2022-09-22 15:24:26 +02:00
parent 7f83d3e224
commit beec17d86e
2 changed files with 25 additions and 10 deletions

View File

@ -218,6 +218,7 @@ export default class FeatureController extends Controller {
let commonFields = { features, version }; let commonFields = { features, version };
if (this.requestCounter.isRPSOverTresholdForApp(appName)) { if (this.requestCounter.isRPSOverTresholdForApp(appName)) {
// @ts-ignore
commonFields.backOff = 10; commonFields.backOff = 10;
} }

View File

@ -1,13 +1,26 @@
interface IRequestBucket {
apps: IRequestBucketApps;
startTime: Date;
endTime?: Date;
}
interface IRequestBucketApps {
[appName: string]: {
count: number;
rps?: number;
};
}
export default class RequestCounter { export default class RequestCounter {
private requestCache: Object; private requestCache: IRequestBucket;
private longTermCache: Object;
private interval: number; private longTermCache: IRequestBucket[];
constructor() { constructor() {
this.requestCache = this.createBucket(); this.requestCache = this.createBucket();
this.longTermCache = []; this.longTermCache = [];
this.interval = setInterval(() => { setInterval(() => {
this.requestCache.endTime = new Date(); this.requestCache.endTime = new Date();
const longTermCacheObject = this.calculateRPS(this.requestCache); const longTermCacheObject = this.calculateRPS(this.requestCache);
@ -18,7 +31,7 @@ export default class RequestCounter {
}, 300000).unref(); }, 300000).unref();
} }
createBucket = () => { createBucket = (): IRequestBucket => {
const bucket = { const bucket = {
apps: {}, apps: {},
startTime: new Date(), startTime: new Date(),
@ -28,10 +41,10 @@ export default class RequestCounter {
}; };
recordRequest = (appName: string): void => { recordRequest = (appName: string): void => {
if (this.requestCache['apps'][appName]) { if (this.requestCache.apps[appName]) {
this.requestCache['apps'][appName].count += 1; this.requestCache.apps[appName].count += 1;
} else { } else {
this.requestCache['apps'][appName] = { count: 1 }; this.requestCache.apps[appName] = { count: 1 };
} }
}; };
@ -39,7 +52,7 @@ export default class RequestCounter {
return this.longTermCache; return this.longTermCache;
}; };
calculateRPS = (requestCache: Object) => { calculateRPS = (requestCache: IRequestBucket): IRequestBucket => {
Object.keys(requestCache.apps).forEach((appName) => { Object.keys(requestCache.apps).forEach((appName) => {
const app = requestCache.apps[appName]; const app = requestCache.apps[appName];
const rps = app.count / 300; const rps = app.count / 300;
@ -49,7 +62,8 @@ export default class RequestCounter {
return requestCache; return requestCache;
}; };
isRPSOverTresholdForApp = (appName: string) => { // @ts-ignore
isRPSOverTresholdForApp = (appName: string): Boolean => {
return true; return true;
}; };
} }