mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-05 17:53:12 +02:00
fix: types
This commit is contained in:
parent
7f83d3e224
commit
beec17d86e
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user