22.2.1. Wallet Error Handling Notes#
https://docs.taler.net/deployments/tops-stage-devtesting.html
22.2.1.1. Current#
prepareWithdrawExchange
“unknown provider” => “trying to connect”
effect on DB
new exchange (ephemeral) entry is created
retries happen even after restart (FIXME: this should not happen)
retries:
Limited retries trying to contact exchange
types of errors:
No network / no response
desired handling: Do transparent retries, allow user to “retry now” and “cancel”
transient protocol error (500 from exchange)
desired handling: Do transparent retries, allow user to “retry now” and “cancel”
we may want to show the last error for diagnostics
Permanent error (e.g. exchange version incompatible with wallet)
desired error handling: show error message, no “retry now”, nothing should be left behind in the database
22.2.1.2. Changes#
prepareWithdrawExchange
progressId as new input (chosen by client / UI)
notifications keyed on progressId
“still waiting”, nextRetry
“transient error”, nextRetry
retryRequestNow(progressId)
cancelRequest(progressId)
Two levels of error handling:
after 5 seconds: “slow network”, no error shown
after 10 seconds: alert, “there’s something wrong”, next retry, “retry now” button
export interface TransactionStateTransitionNotification {
type: NotificationType.RequestProgress;
operation: string;
progressToken: string;
error: TalerErrorDetail;
nextRetryDelay: TalerProtocolDuration;
}
22.2.1.3. dev experiments#
new dev experiment for blocking requests $N times before they go through
22.2.1.4. More error handling notes#
request
notifications
recoverable/transient error
network timeout
return values
error
non-recoverable error
user abort
success
Phases:
requests starts
after 5s: show “it’s taking longer than expected”
after 10s: “action might not be possible”
retry now (possible every 3s)
error details
cancel