View Issue Details

IDProjectCategoryView StatusLast Update
0009150Talerwallet-corepublic2024-09-02 13:28
Reportermikolai Assigned ToFlorian Dold  
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionopen 
Product Version0.12 
Summary0009150: Polling problem on wallet-initiated withdrawal
DescriptionWallet-initiated withdrawals show a error message as long as the wire-transfer to the exchange is not completed. As soon as it is, the withdrawal is completed successfully.

The root cause might well be in wallet-core or at the exchange's side, but I don't have further insights myself.
Steps To Reproduce1. Open Android app
2. click "receive"
3. input an arbitrary amount
4. click "withdraw from bank account"
5. confirm withdrawal
6. go back to transaction list
7. wait some time
8. see the following error in red: "Error response did not even contain JSON. The request URL might be wrong or the service might be unavailable"
9. debug mode shows:

{
  "code": 7002,
  "hint": "Error response did not even contain JSON. The request URL might be wrong or the service might be unavailable.",
  "message": null,
  "when": {
    "t_ms": 1725032753355
  },
  "requestUrl": "https://exchange.demo.taler.net/reserves/3MRZWS3Z9G6R9Y1KDPB310Q3C12YHD0AXJJXFNBZHEJVKBJAZ73G?timeout_ms=30000",
  "requestMethod": "GET",
  "httpStatusCode": 404,
  "contentType": "[application/json]"
}

10. manually transfer the money via the bank UI at bank.demo.taler.net (using the payto:// URI shown in the wallet)
11. see a successful withdrawal
Additional InformationOn our local setup, we face a similar problem, but a different error message:

{
  "id": "req-1034",
  "when": {
    "t_ms": 1725027465082
  },
  "type": "http-fetch-finish-error",
  "url": "https://exchange.taler.datenspuren.de/reserves/4YT7XASRHRN1341BMAAQC2X16PB46VEYPWRY8VMZJ6S65K7E3W6G?timeout_ms=30000",
  "error": {
    "code": 7001,
    "when": {
      "t_ms": 1725027465082
    },
    "hint": "unexpected exception (message: unexpected end of stream on https://exchange.taler.datenspuren.de/...)",
    "stack": " at fetch (<compiled_js>:9314)\n"
  }
}

After successful wire transfer, the withdrawal succeeds here, too.
TagsNo tags attached.

Activities

Christian Grothoff

2024-08-30 21:03

manager   ~0023121

You should configure your nginx with longer timeouts. Basically, your nginx terminates the connection with a gateway timeout, returning HTML. That's what makes the wallet unhappy. Just tell nginx:

    proxy_send_timeout 3000s;

or similar ;-).

mikolai

2024-09-02 11:22

developer   ~0023130

Such timeouts are already part of the regional-currency deployment, so no need to change anything there. I think the problem comes from the C3D2 infrastructure with another proxy in front of our Taler server that probably terminates connections too early. Will try to increase the timeouts there. Is there a maximum value that should be allowed / will be requested by the wallet?

mikolai

2024-09-02 11:27

developer   ~0023131

But maybe wallet-core could handle an empty response after a certain amount of time a little more gracefully and decrease the polling timeout for further requests to that server.

URL to test with (for now, until timeouts are adapted): https://exchange.taler.datenspuren.de/reserves/BDW8G51HVR6BSN6VZSTRVQDJJCBSQH5R4XY55A82NTR6V6BWCTR0?timeout_ms=40000

Florian Dold

2024-09-02 13:28

manager   ~0023136

The typical long-polling timeout is 30s. In some circumstances it's lower, but currently never higher.

Issue History

Date Modified Username Field Change
2024-08-30 17:50 mikolai New Issue
2024-08-30 17:50 mikolai Status new => assigned
2024-08-30 17:50 mikolai Assigned To => Florian Dold
2024-08-30 21:03 Christian Grothoff Note Added: 0023121
2024-09-02 11:22 mikolai Note Added: 0023130
2024-09-02 11:27 mikolai Note Added: 0023131
2024-09-02 11:28 mikolai Category wallet (Android App) => wallet-core
2024-09-02 13:28 Florian Dold Note Added: 0023136