View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0005010 | Taler | exchange | public | 2017-05-14 13:40 | 2021-09-02 16:22 |
| Reporter | Christian Grothoff | Assigned To | Christian Grothoff | Resolution deadline | |
| Implementer | Reviewer | ||||
| Release signed by | Deployed by | ||||
| Verifier | Communicator | ||||
| Data protection authority notification required | No | ||||
| CSIRT notification required | No | ||||
| Estimated effort (hours) | Actual effort (hours) | 0 | |||
| Fast-track | No | ||||
| Work package | none | ||||
| Priority | normal | Severity | major | Reproducibility | random |
| Status | closed | Resolution | fixed | ||
| Platform | i7 | OS | Debian GNU/Linux | OS Version | squeeze |
| Product Version | git (master) | ||||
| Target Version | 0.4 | Fixed in Version | 0.4 | ||
| Summary | 0005010: DB serializability violations not always handled gracefully | ||||
| Description | Sometimes the DB plugin returns a "hard" error code for a serializabiltiy violation, causing the exchange to not retry the request, but go all 500 on the user. We need to go over the code and properly identify all places where serializability violations can occur and double-check their handling. | ||||
| Steps To Reproduce | Run multiple instances of taler-merchant-generate-payments -n 1000 -e -m against one merchant/exchange backend produces errors like: May 14 15:31:46-114418 taler-exchange-httpd-12796 ERROR Query failed at plugin_exchangedb_postgres.c:2065: could not serialize access due to read/write dependencies among transactions/Reason code: Canceled on identification as a pivot, during write./ERROR: could not serialize access due to read/write dependencies among transactions DETAIL: Reason code: Canceled on identification as a pivot, during write. HINT: The transaction might succeed if retried. /PGRES_FATAL_ERROR/ERROR: could not serialize access due to read/write dependencies among transactions DETAIL: Reason code: Canceled on identification as a pivot, during write. HINT: The transaction might succeed if retried. May 14 15:31:46-114486 taler-exchange-httpd-12796 ERROR Assertion failed at plugin_exchangedb_postgres.c:2483. May 14 15:31:46-114502 taler-exchange-httpd-12796 ERROR Assertion failed at taler-exchange-httpd_db.c:872. and May 14 14:10:53-171686 taler-merchant-generate-payments-4409 ERROR Unexpected response code 500 to command withdraw-coin-3 {"error": "internal error", "code": 1108, "hint": "Failure in database interaction"}May 14 14:10:53-171790 taler-merchant-generate-payments-4409 ERROR Assertion failed at taler-merchant-generate-payments.c:680. Configuration file in use for this against ~0.3 is attached. | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| 6bb2631..6029ed7 contains some initial work in this direction, adding a "state" to the sessions to track serializability violations, logic to test the PQ return code against this situation, and modifies some (!) of the functions to return #GNUNET_NO if such a violation is detected. TODO: * broaden the logic to all functions in the API * actually handle the return code in all clients using the API * make the same changes also in the auditor and merchant backend DB logic | |
| Exchange and auditor have been updated, merchant backend is still TBD. | |
| For the merchant, the payment generators (sometimes, after a while) fail IF one runs 2 merchant instances and 4 payment generators. While the merchant backend fails to log a proper error message, I suspect this is due to this issue not being fixed yet in the merchant backend. | |
| Fixed merchantdb handling of soft errors (by visual inspection); found that generate-payments test failed in part because of timeout given large values of '-n'. Adjusted timeout based on value given to '-n'. | |
| Fix committed to master branch. | |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2017-05-14 13:40 | Christian Grothoff | New Issue | |
| 2017-05-14 13:40 | Christian Grothoff | Status | new => assigned |
| 2017-05-14 13:40 | Christian Grothoff | Assigned To | => Christian Grothoff |
| 2017-05-14 13:40 | Christian Grothoff | File Added: taler.conf | |
| 2017-05-25 00:07 | Christian Grothoff | Note Added: 0012159 | |
| 2017-06-25 11:05 | Christian Grothoff | Note Added: 0012268 | |
| 2017-06-25 11:11 | Christian Grothoff | Note Added: 0012269 | |
| 2017-06-29 17:25 | Christian Grothoff | Note Added: 0012282 | |
| 2017-06-29 18:01 | Christian Grothoff | Status | assigned => informing |
| 2017-06-29 18:01 | Christian Grothoff | Resolution | open => fixed |
| 2017-06-29 18:01 | Christian Grothoff | Fixed in Version | => 0.4 |
| 2017-06-29 18:01 | Christian Grothoff | Target Version | 0.5 => 0.4 |
| 2017-10-18 13:42 | Christian Grothoff | Status | informing => closed |
| 2021-09-02 16:13 | Christian Grothoff | ||
| 2021-09-02 16:13 | Christian Grothoff | ||
| 2021-09-02 16:13 | Christian Grothoff | ||
| 2021-09-02 16:13 | Christian Grothoff | ||
| 2021-09-02 16:13 | Christian Grothoff | ||
| 2021-09-02 16:13 | Christian Grothoff | ||
| 2021-09-02 16:14 | Christian Grothoff | Note Added: 0018295 | |
| 2021-09-02 16:22 | Christian Grothoff |