From 4a8442901d30e2721b7f581c1ab45db97a0ddd26 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 15 Jun 2018 14:45:11 +0100 Subject: [PATCH] Remove failures when marking them for tracking --- src/DecryptionFailureTracker.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/DecryptionFailureTracker.js b/src/DecryptionFailureTracker.js index 0f86093209..9eadb332a8 100644 --- a/src/DecryptionFailureTracker.js +++ b/src/DecryptionFailureTracker.js @@ -98,9 +98,17 @@ export default class DecryptionFailureTracker { * @param {number} nowTs the timestamp that represents the time now. */ checkFailures(nowTs) { - const failuresGivenGrace = this.failures.filter( - (f) => nowTs > f.ts + DecryptionFailureTracker.GRACE_PERIOD_MS, - ); + const failuresGivenGrace = []; + const failuresNotReady = []; + while (this.failures.length > 0) { + const f = this.failures.shift(); + if (nowTs > f.ts + DecryptionFailureTracker.GRACE_PERIOD_MS) { + failuresGivenGrace.push(f); + } else { + failuresNotReady.push(f); + } + } + this.failures = failuresNotReady; // Only track one failure per event const dedupedFailuresMap = failuresGivenGrace.reduce(