diff options
author | Sebastian <sebasjm@gmail.com> | 2022-01-13 01:31:53 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-01-13 01:34:16 -0300 |
commit | f6ec105b72ab5b79b934b8a4c1626b019c31c4a2 (patch) | |
tree | 031b3af4359880bd40cb0e7fdc6b4bd0a6378a3f | |
parent | 5eeb00e158ee5908bb4b62374f43e35d1a5f1a49 (diff) |
fixing high cpu usage after some time
retryinfo was not being updated and not being used by exchangeCheckRefresh pending operation
-rw-r--r-- | packages/taler-wallet-core/src/operations/exchanges.ts | 13 | ||||
-rw-r--r-- | packages/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 index 2975c860f..c14f27656 100644 --- 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 index 99d275836..b2f13625a 100644 --- 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, }); |