taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

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:
Mpackages/taler-util/src/TaskThrottler.ts | 10+++++++---
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; }