Skip to content
Extraits de code Groupes Projets
Valider 641edc7d rédigé par Will Hunt's avatar Will Hunt
Parcourir les fichiers

Expire old requests in metrics

parent c9cad35a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -4,6 +4,7 @@ import { Log } from "./log"; ...@@ -4,6 +4,7 @@ import { Log } from "./log";
const AgeCounters = PrometheusMetrics.AgeCounters; const AgeCounters = PrometheusMetrics.AgeCounters;
const log = new Log("BridgeMetrics"); const log = new Log("BridgeMetrics");
const REQUEST_EXPIRE_TIME_MS = 30000;
interface IAgeCounter { interface IAgeCounter {
setGauge(gauge: Gauge, morelabels: any); setGauge(gauge: Gauge, morelabels: any);
...@@ -100,6 +101,13 @@ export class PrometheusBridgeMetrics implements IBridgeMetrics { ...@@ -100,6 +101,13 @@ export class PrometheusBridgeMetrics implements IBridgeMetrics {
labels: ["outcome"], labels: ["outcome"],
}); });
this.requestsInFlight = new Map(); this.requestsInFlight = new Map();
setInterval(() => {
this.requestsInFlight.forEach((time, id) => {
if (Date.now() - time) {
this.requestsInFlight.delete(id);
}
});
}, REQUEST_EXPIRE_TIME_MS)
return this; return this;
} }
...@@ -109,6 +117,7 @@ export class PrometheusBridgeMetrics implements IBridgeMetrics { ...@@ -109,6 +117,7 @@ export class PrometheusBridgeMetrics implements IBridgeMetrics {
public requestOutcome(id: string, isRemote: boolean, outcome: string) { public requestOutcome(id: string, isRemote: boolean, outcome: string) {
const startTime = this.requestsInFlight.get(id); const startTime = this.requestsInFlight.get(id);
this.requestsInFlight.delete(id);
if (!startTime) { if (!startTime) {
log.verbose(`Got "requestOutcome" for ${id}, but this request was never started`); log.verbose(`Got "requestOutcome" for ${id}, but this request was never started`);
return; return;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter