taler-typescript-core

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

commit 92674b3c9747648e050784554c294434e874b684
parent 8afb4942915e80569e18bd179f5e7e27f133d4c1
Author: Florian Dold <florian@dold.me>
Date:   Thu,  9 Jul 2026 22:03:37 +0200

limit timeouts in task shepherd

Diffstat:
Mpackages/taler-wallet-core/src/shepherd.ts | 12+++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/packages/taler-wallet-core/src/shepherd.ts b/packages/taler-wallet-core/src/shepherd.ts @@ -413,6 +413,10 @@ export class TaskSchedulerImpl implements TaskScheduler { info: ShepherdInfo, delay: Duration, ): Promise<void> { + // Limit how long we wait. + // The NodeJS runtime doesn't like very long timeouts. + delay = Duration.min(delay, Duration.fromSpec({ hours: 1 })); + logger.trace(`Waiting on ${taskId} (scheduled later)`); try { const op = openPromise<void>(); info.interruptWait = () => op.resolve(); @@ -498,9 +502,7 @@ export class TaskSchedulerImpl implements TaskScheduler { ); const t = timestampAbsoluteFromDb(retryRecord.retryInfo.nextRetry); const delay = AbsoluteTime.remaining(t); - logger.trace( - `Stored error for ${taskId}, waiting for ${delay.d_ms} ms`, - ); + logger.trace(`Stored error for ${taskId},`); info.taskState = TaskState.WaitingBackoff; await this.wait(taskId, info, delay); break; @@ -509,7 +511,7 @@ export class TaskSchedulerImpl implements TaskScheduler { const retryRecord = await storePendingTaskPending(this.ws, taskId); const t = timestampAbsoluteFromDb(retryRecord.retryInfo.nextRetry); const delay = AbsoluteTime.remaining(t); - logger.trace(`Waiting for ${delay.d_ms} ms`); + logger.trace(`Waiting on ${taskId} (backoff)`); info.taskState = TaskState.WaitingBackoff; await this.wait(taskId, info, delay); break; @@ -526,7 +528,7 @@ export class TaskSchedulerImpl implements TaskScheduler { ); const t = timestampAbsoluteFromDb(retryRecord.retryInfo.nextRetry); const delay = AbsoluteTime.remaining(t); - logger.trace(`Waiting for ${delay.d_ms} ms`); + logger.trace(`Waiting on ${taskId} (scheduled later)`); info.taskState = TaskState.WaitingScheduled; await this.wait(taskId, info, delay); break;