commit de8ad8f358c3643334f8a4d5bbf6d33195e8b798
parent 8bd9c65749536292e11f30b00ebfd949287c8bd3
Author: Florian Dold <florian@dold.me>
Date: Sat, 18 Jul 2026 11:41:39 +0200
fix unintentionally slow token refilling in task throttler
Diffstat:
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/packages/taler-util/src/TaskThrottler.ts b/packages/taler-util/src/TaskThrottler.ts
@@ -61,17 +61,21 @@ class TaskState {
if (d.d_ms === "forever") {
throw Error("assertion failed");
}
+ // Be lazy and avoid rounding issues.
+ if (d.d_ms < 1000 / MAX_PER_SECOND) {
+ return;
+ }
this.tokensSecond = Math.min(
MAX_PER_SECOND,
- this.tokensSecond + d.d_ms / 1000,
+ this.tokensSecond + (d.d_ms / 1000) * MAX_PER_SECOND,
);
this.tokensMinute = Math.min(
MAX_PER_MINUTE,
- this.tokensMinute + d.d_ms / 1000 / 60,
+ this.tokensMinute + (d.d_ms / 1000 / 60) * MAX_PER_MINUTE,
);
this.tokensHour = Math.min(
MAX_PER_HOUR,
- this.tokensHour + d.d_ms / 1000 / 60 / 60,
+ this.tokensHour + (d.d_ms / 1000 / 60 / 60) * MAX_PER_HOUR,
);
this.lastUpdate = now;
}