taler-typescript-core

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

commit f6ec105b72ab5b79b934b8a4c1626b019c31c4a2
parent 5eeb00e158ee5908bb4b62374f43e35d1a5f1a49
Author: Sebastian <sebasjm@gmail.com>
Date:   Thu, 13 Jan 2022 01:31:53 -0300

fixing high cpu usage after some time

retryinfo was not being updated and not being used by exchangeCheckRefresh pending operation

Diffstat:
Mpackages/taler-wallet-core/src/operations/exchanges.ts | 13+++++++------
Mpackages/taler-wallet-core/src/operations/pending.ts | 11++---------
2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts @@ -123,7 +123,7 @@ async function handleExchangeUpdateError( ): Promise<void> { await ws.db .mktx((x) => ({ exchanges: x.exchanges })) - .runReadOnly(async (tx) => { + .runReadWrite(async (tx) => { const exchange = await tx.exchanges.get(baseUrl); if (!exchange) { return; @@ -131,6 +131,7 @@ async function handleExchangeUpdateError( exchange.retryInfo.retryCounter++; updateRetryInfoTimeout(exchange.retryInfo); exchange.lastError = err; + await tx.exchanges.put(exchange) }); if (err) { ws.notify({ type: NotificationType.ExchangeOperationError, error: err }); @@ -526,11 +527,11 @@ async function updateExchangeFromUrlImpl( tosFound !== undefined ? tosFound : await downloadExchangeWithTermsOfService( - baseUrl, - ws.http, - timeout, - "text/plain", - ); + baseUrl, + ws.http, + timeout, + "text/plain", + ); let recoupGroupId: string | undefined = undefined; diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts @@ -51,25 +51,18 @@ async function gatherExchangePending( resp: PendingOperationsResponse, ): Promise<void> { await tx.exchanges.iter().forEachAsync(async (e) => { - let exchangeUpdateTimestampDue: Timestamp; - - if (e.lastError) { - exchangeUpdateTimestampDue = e.retryInfo.nextRetry; - } else { - exchangeUpdateTimestampDue = e.nextUpdate; - } resp.pendingOperations.push({ type: PendingTaskType.ExchangeUpdate, givesLifeness: false, - timestampDue: exchangeUpdateTimestampDue, + timestampDue: e.lastError ? e.retryInfo.nextRetry : e.nextUpdate, exchangeBaseUrl: e.baseUrl, lastError: e.lastError, }); resp.pendingOperations.push({ type: PendingTaskType.ExchangeCheckRefresh, - timestampDue: e.nextRefreshCheck, + timestampDue: e.lastError ? e.retryInfo.nextRetry : e.nextRefreshCheck, givesLifeness: false, exchangeBaseUrl: e.baseUrl, });