diff options
author | Florian Dold <florian@dold.me> | 2022-03-08 20:39:52 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-03-08 20:39:56 +0100 |
commit | d5a933e4cb685aab3e5e6bae5ca2358291e59130 (patch) | |
tree | 852e85a8d056fc80bd370c5ac89c5fd7354d0251 /packages/taler-wallet-core/src/operations/pending.ts | |
parent | 1d1c847b793620acf3a2b193ab45eabf53234cb2 (diff) | |
download | wallet-core-d5a933e4cb685aab3e5e6bae5ca2358291e59130.tar.xz |
wallet-core: handle reserve retries better
We now always increment the next retry timeout before doing anything
else, so that it is impossible to accidentally retry immediately.
This fixes a bug where we previously made many, very frequent requests
to the bank integration API.
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pending.ts')
-rw-r--r-- | packages/taler-wallet-core/src/operations/pending.ts | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts index 7e82236f0..f615e8e5d 100644 --- a/packages/taler-wallet-core/src/operations/pending.ts +++ b/packages/taler-wallet-core/src/operations/pending.ts @@ -48,7 +48,6 @@ async function gatherExchangePending( resp: PendingOperationsResponse, ): Promise<void> { await tx.exchanges.iter().forEachAsync(async (e) => { - resp.pendingOperations.push({ type: PendingTaskType.ExchangeUpdate, givesLifeness: false, @@ -79,16 +78,16 @@ async function gatherReservePending( ? ReserveType.TalerBankWithdraw : ReserveType.Manual; switch (reserve.reserveStatus) { - case ReserveRecordStatus.DORMANT: + case ReserveRecordStatus.Dormant: // nothing to report as pending break; - case ReserveRecordStatus.WAIT_CONFIRM_BANK: - case ReserveRecordStatus.QUERYING_STATUS: - case ReserveRecordStatus.REGISTERING_BANK: + case ReserveRecordStatus.WaitConfirmBank: + case ReserveRecordStatus.QueryingStatus: + case ReserveRecordStatus.RegisteringBank: { resp.pendingOperations.push({ type: PendingTaskType.Reserve, givesLifeness: true, - timestampDue: reserve.retryInfo.nextRetry, + timestampDue: reserve.retryInfo?.nextRetry ?? Timestamp.now(), stage: reserve.reserveStatus, timestampCreated: reserve.timestampCreated, reserveType, @@ -96,6 +95,7 @@ async function gatherReservePending( retryInfo: reserve.retryInfo, }); break; + } default: // FIXME: report problem! break; |