View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0010066 | Taler | wallet-core | public | 2025-06-03 21:44 | 2026-03-18 22:23 |
| Reporter | avalos | Assigned To | Florian Dold | ||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | assigned | Resolution | open | ||
| Product Version | git (master) | ||||
| Target Version | 1.5 | ||||
| Summary | 0010066: expired peer-pull-credit transaction not transitioning to final state [2h] | ||||
| Description | { "type": "peer-pull-credit", "transactionId": "txn:peer-pull-credit:XXX", "timestamp": { "t_s": 1747765622 }, "txState": { "major": "pending", "minor": "create-purse" }, "txActions": [ "retry", "abort", "suspend" ], "kycUrl": "https://exchange.taler-ops.ch/kyc-spa/XXX", "exchangeBaseUrl": "https://exchange.taler-ops.ch/", "error": { "code": 7005, "hint": "Unexpected HTTP status 400 in response", "message": null, "when": { "t_ms": 1748979698492 }, "requestUrl": "https://exchange.taler-ops.ch/reserves/XXX/purse", "requestMethod": "POST", "httpStatusCode": 400, "errorResponse": { "code": 1775, "hint": "The purse expiration time is in the past at the time of its creation." } }, "amountRaw": "CHF:1", "amountEffective": "CHF:1", "scopes": [ { "type": "global", "currency": "CHF" } ], "info": { "expiration": { "t_s": 1747852021 }, "summary": "test test" }, "talerUri": "taler://pay-pull/exchange.taler-ops.ch/XXX" } It stays on pending(create-purse) and keeps long polling in the background and receiving the following error: { "code": 7005, "hint": "Unexpected HTTP status 400 in response", "message": null, "when": { "t_ms": 1748978894085 }, "requestUrl": "https://exchange.taler-ops.ch/reserves/X3AM8Y1P4WTN7J7YACGA8VF9K44M0A4VPXJBG6YP1WYJ66TPR3AG/purse", "requestMethod": "POST", "httpStatusCode": 400, "errorResponse": { "code": 1775, "hint": "The purse expiration time is in the past at the time of its creation." } } | ||||
| Tags | ux | ||||
| child of | 0009334 | assigned | Florian Dold | wallet does not automatically handle expired pay-merchant transactions, payment-expired test also only handles manual case [6h] |
|
|
The error case isn't documented by the exchange, so the wallet keeps the transaction as pending with retries. => We need to agree on the HTTP status (shouldn't it be Gone and not 400?!) and EC for this case, then wallet-core can handle it appropriately. |
|
|
Well, we do have an open bug to expand the documentation to make all ECs more explicit, but that's a very large task for the entire API, but do feel free to add this specific one. If the timing conflict is not inherent in the request and the purse expiration is compared to the current time of the exchange, then I'm good with 410. If the request is internally inconsistent and has two conflicting times within it, then 400 is appropriate. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-06-03 21:44 | avalos | New Issue | |
| 2025-06-03 21:44 | avalos | Status | new => assigned |
| 2025-06-03 21:44 | avalos | Assigned To | => Florian Dold |
| 2025-06-03 22:15 | Christian Grothoff | Product Version | => git (master) |
| 2025-06-03 22:15 | Christian Grothoff | Target Version | => 1.1 |
| 2025-06-03 22:15 | Christian Grothoff | Tag Attached: ux | |
| 2025-06-05 13:46 | Florian Dold | Summary | expired peer-pull-credit transaction not transitioning to final state => expired peer-pull-credit transaction not transitioning to final state [2h] |
| 2025-08-31 19:34 | Christian Grothoff | Target Version | 1.1 => 1.6 |
| 2025-08-31 19:35 | Christian Grothoff | Relationship added | child of 0009334 |
| 2025-09-04 20:43 | Christian Grothoff | Target Version | 1.6 => 1.5 |
| 2026-03-18 21:48 | Florian Dold | Assigned To | Florian Dold => Christian Grothoff |
| 2026-03-18 21:48 | Florian Dold | Status | assigned => feedback |
| 2026-03-18 21:48 | Florian Dold | Note Added: 0028179 | |
| 2026-03-18 22:23 | Christian Grothoff | Note Added: 0028180 | |
| 2026-03-18 22:23 | Christian Grothoff | Assigned To | Christian Grothoff => Florian Dold |
| 2026-03-18 22:23 | Christian Grothoff | Status | feedback => assigned |