View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008441 | Taler | wallet-core | public | 2024-02-19 15:38 | 2024-02-22 13:51 |
Reporter | Florian Dold | Assigned To | Florian Dold | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | assigned | Resolution | open | ||
Target Version | post-1.0 | ||||
Summary | 0008441: wallet-core should long-poll withdrawal operation *and* reserve at the same time | ||||
Description | ... instead of waiting for the withdrawal operation before even contacting the exchange. | ||||
Tags | No tags attached. | ||||
|
IMO this threatens to completely break the nice, uniform state machine, error handling and retry approach we have for wallet-core transactions. What happens if one of the long poll endpoints returns an error status (immediately)? Do we now have two separate "error" properties on the transaction now? How do we handle retry counters in this case? Do we have two separate ones? A possible approach: * Ignore all errors from the exchange long-polling while we are in pending(bank-confirm-transfer), don't report them outside of logs, we won't be able to show them in the UI * Run an additional background task that is coupled to the normal withdrawal task and has its own retry counter and long-polling logic (i.e. preventing a "short" long-poll and doing back-off when the long-poll endpoint returns 5xx). All this seems like an awful lot of complexity for something that's only needed when the bank services goes offline but the exchange still works. |
|
While the normal long-polling is trivial, this "double long-polling" seems excessive especially for 0.9.4. |
|
I'd probably say ignore (transient) exchange errors until/unless you have an answer from the bank (but not if say /config or /keys indicate this isn't even an exchange!), and otherwise if bank long polling ends with failed, cancel exchange. If bank long polling ends with 'success', keep exchange long polling until success there, too. Then do /withdraw. If exchange gives you a really hard error (5xx, or /{keys,config} tell you not-an-exchange), possibly *abort* the bank transfer (if you still can) as this is not an exchange and thus /withdraw would fail later (and that'd be worse!). Anyway, 0.9.5 is fine ;-), as would post-1.0, I guess. |
Date Modified | Username | Field | Change |
---|---|---|---|
2024-02-19 15:38 | Florian Dold | New Issue | |
2024-02-19 15:38 | Florian Dold | Status | new => assigned |
2024-02-19 15:38 | Florian Dold | Assigned To | => Florian Dold |
2024-02-19 15:38 | Florian Dold | Target Version | => 0.9.4 |
2024-02-20 01:56 | Florian Dold | Note Added: 0021382 | |
2024-02-20 01:57 | Florian Dold | Assigned To | Florian Dold => Christian Grothoff |
2024-02-20 01:57 | Florian Dold | Note Edited: 0021382 | |
2024-02-20 01:58 | Florian Dold | Note Added: 0021383 | |
2024-02-20 01:58 | Florian Dold | Note Edited: 0021383 | |
2024-02-21 21:39 | Christian Grothoff | Note Added: 0021429 | |
2024-02-21 21:39 | Christian Grothoff | Severity | minor => feature |
2024-02-21 21:39 | Christian Grothoff | Note Edited: 0021429 | |
2024-02-21 22:33 | Christian Grothoff | Assigned To | Christian Grothoff => Florian Dold |
2024-02-22 13:51 | Florian Dold | Target Version | 0.9.4 => post-1.0 |