From 6ee0354940c09d1065c3b3b7bf08e41fd6014268 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 8 Mar 2022 23:09:20 +0100 Subject: wallet: improve retry handling for payments, update error codes --- packages/taler-wallet-core/src/operations/README.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'packages/taler-wallet-core/src/operations/README.md') diff --git a/packages/taler-wallet-core/src/operations/README.md b/packages/taler-wallet-core/src/operations/README.md index ca7140d6a..426f2c553 100644 --- a/packages/taler-wallet-core/src/operations/README.md +++ b/packages/taler-wallet-core/src/operations/README.md @@ -2,6 +2,25 @@ This folder contains the implementations for all wallet operations that operate on the wallet state. -To avoid cyclic dependencies, these files must **not** reference each other. Instead, other operations should only be accessed via injected dependencies. +To avoid cyclic dependencies, these files must **not** reference each other. Instead, other operations should only be accessed via injected dependencies. Avoiding cyclic dependencies is important for module bundlers. + +## Retries + +Many operations in the wallet are automatically retried when they fail or when the wallet +is still waiting for some external condition (such as a wire transfer to the exchange). + +Retries are generally controlled by a "retryInfo" field in the corresponding database record. This field is set to undefined when no retry should be scheduled. + +Generally, the code to process a pending operation should first increment the +retryInfo (and reset the lastError) and then process the operation. This way, +it is impossble to forget incrementing the retryInfo. + +For each retriable operation, there are usually `resetRetry`, `incrementRetry` and +`reportError` operations. + +Note that this means that _during_ some operation, lastError will be cleared. The UI +should accommodate for this. + +It would be possible to store a list of last errors, but we currently don't do that. -- cgit v1.2.3