View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006812 | Taler | mechant backend | public | 2021-03-17 19:24 | 2024-01-12 14:04 |
Reporter | sebasjm | Assigned To | Christian Grothoff | ||
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | git (master) | ||||
Target Version | 0.8 | Fixed in Version | 0.8 | ||
Summary | 0006812: creation of default instance fail after soft delete | ||||
Description | Assertion failed when checking that there is just one instance after db insert ERROR Assertion failed at taler-merchant-httpd_private-post-instances.c:451. | ||||
Tags | No tags attached. | ||||
Attached Files | script-recreate-default.sh (1,599 bytes)
#/bin/bash ID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) HOST=https://backend.demo.taler.net AUTH="ApiKey sandbox" CURRENCY=KUDOS set -x curl -q $HOST/private/instances -H "Authorization: $AUTH" --data-raw '{"default_wire_transfer_delay":{"d_ms":2000},"auth": { "method": "external" },"default_pay_delay":{"d_ms":1000},"jurisdiction":{},"address":{},"default_wire_fee_amortization":10,"default_max_wire_fee":"'$CURRENCY':2","default_max_deposit_fee":"'$CURRENCY':1","payto_uris":["payto://asd/asd"],"name":"qwe","id":"'$ID'"}' echo delete with purge work as expeced curl -q "$HOST/private/instances/$ID?purge=yes" -H "Authorization: $AUTH" -X DELETE curl -q $HOST/private/instances -H "Authorization: $AUTH" --data-raw '{"default_wire_transfer_delay":{"d_ms":2000},"auth": { "method": "external" },"default_pay_delay":{"d_ms":1000},"jurisdiction":{},"address":{},"default_wire_fee_amortization":10,"default_max_wire_fee":"'$CURRENCY':2","default_max_deposit_fee":"'$CURRENCY':1","payto_uris":["payto://asd/asd"],"name":"qwe","id":"'$ID'"}' echo this fill make the next create fail curl -q "$HOST/private/instances/$ID" -H "Authorization: $AUTH" -X DELETE curl -q $HOST/private/instances -H "Authorization: $AUTH" --data-raw '{"default_wire_transfer_delay":{"d_ms":2000},"auth": { "method": "external" },"default_pay_delay":{"d_ms":1000},"jurisdiction":{},"address":{},"default_wire_fee_amortization":10,"default_max_wire_fee":"'$CURRENCY':2","default_max_deposit_fee":"'$CURRENCY':1","payto_uris":["payto://asd/asd"],"name":"qwe","id":"'$ID'"}' | ||||
|
this is specially bad when soft deleting default instance should the backend allow default instance deletion? |
|
Good question. I think we should allow deletion, after all that is a good way to clean up everything in test cases. Also, one could conceivably deliberately delete the default instance to disable instance management while keeping other instances around. Now, if deleting the default instance, the only way to recover to the point of being able to do instance management is to setup a fresh instance. I think the funky case is deleting the default instance without purging it ("soft delete" as you called it). In that case, one cannot create a fresh default instance. But again, I think purging should then still be possible, right? I'll add some tests around this... |
|
fd1cac5..9bec95f fixes the error code being returned (409 if instance was deleted but not purged). Still to do: allow purge after deletion, this currently fails (updated script to create issue attached). script-recreate-default-2.sh (1,674 bytes)
#/bin/bash ID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) HOST=http://localhost:8080 AUTH="ApiKey sandbox" CURRENCY=EUR set -x curl -q $HOST/private/instances -H "Authorization: $AUTH" --data-raw '{"default_wire_transfer_delay":{"d_ms":2000},"auth": { "method": "external" },"default_pay_delay":{"d_ms":1000},"jurisdiction":{},"address":{},"default_wire_fee_amortization":10,"default_max_wire_fee":"'$CURRENCY':2","default_max_deposit_fee":"'$CURRENCY':1","payto_uris":["payto://asd/asd"],"name":"qwe","id":"'$ID'"}' echo delete with purge work as expeced curl -q "$HOST/instances/$ID/private?purge=yes" -H "Authorization: $AUTH" -X DELETE curl -q $HOST/private/instances -H "Authorization: $AUTH" --data-raw '{"default_wire_transfer_delay":{"d_ms":2000},"auth": { "method": "external" },"default_pay_delay":{"d_ms":1000},"jurisdiction":{},"address":{},"default_wire_fee_amortization":10,"default_max_wire_fee":"'$CURRENCY':2","default_max_deposit_fee":"'$CURRENCY':1","payto_uris":["payto://asd/asd"],"name":"qwe","id":"'$ID'"}' echo this fill make the next create fail curl -q "$HOST/instances/$ID/private" -H "Authorization: $AUTH" -X DELETE curl -q "$HOST/instances/$ID/private?purge=yes" -H "Authorization: $AUTH" -X DELETE curl -q $HOST/private/instances -H "Authorization: $AUTH" --data-raw '{"default_wire_transfer_delay":{"d_ms":2000},"auth": { "method": "external" },"default_pay_delay":{"d_ms":1000},"jurisdiction":{},"address":{},"default_wire_fee_amortization":10,"default_max_wire_fee":"'$CURRENCY':2","default_max_deposit_fee":"'$CURRENCY':1","payto_uris":["payto://asd/asd"],"name":"qwe","id":"'$ID'"}' |
|
docs.git: b9d293e..0fd1ff5: GET /private/instances now indicates if an instance has been deleted but not purged. merchant.git: 9bec95f..385fb34: allows purging previously deleted instances, which means that afterwards it is again possible to create a new instance of the same ID. |
|
Sebastian: I consider this resolved. Note: the SPA should now check for the 'deleted' flag and then can still allow the instance to be purged. Some operations are not permitted on deleted (but not purged) instances, specifically, one cannot create orders, lock products, create refunds, create reserves (see: Tipping), or authorize tips. POSTing transfers I have allowed. See the 'allow_deleted_instance' field in the handler array for which endpoints are permitted for deleted but not purged instances. (I hope I got those right...). |
|
Fix committed to master branch. |
merchant: master 385fb34f 2021-04-02 17:54 Details Diff |
fix 0006812: allow purging of deleted instances |
Affected Issues 0006812 |
|
mod - src/backend/taler-merchant-httpd.c | Diff File | ||
mod - src/backend/taler-merchant-httpd.h | Diff File | ||
mod - src/backend/taler-merchant-httpd_private-delete-instances-ID.c | Diff File | ||
mod - src/backend/taler-merchant-httpd_private-get-instances-ID.c | Diff File | ||
mod - src/backend/taler-merchant-httpd_private-get-instances.c | Diff File | ||
mod - src/backend/taler-merchant-httpd_private-patch-instances-ID.c | Diff File | ||
mod - src/backend/taler-merchant-httpd_private-post-instances.c | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2021-03-17 19:24 | sebasjm | New Issue | |
2021-03-17 19:24 | sebasjm | Status | new => assigned |
2021-03-17 19:24 | sebasjm | Assigned To | => Christian Grothoff |
2021-03-17 19:24 | sebasjm | File Added: script-recreate-default.sh | |
2021-03-17 19:26 | sebasjm | Note Added: 0017626 | |
2021-03-30 23:37 | Christian Grothoff | Note Added: 0017660 | |
2021-03-30 23:37 | Christian Grothoff | Priority | normal => high |
2021-03-30 23:37 | Christian Grothoff | Target Version | git (master) => 0.9 |
2021-03-30 23:37 | Christian Grothoff | Description Updated | |
2021-04-02 15:28 | Christian Grothoff | Note Added: 0017671 | |
2021-04-02 15:28 | Christian Grothoff | File Added: script-recreate-default-2.sh | |
2021-04-02 15:58 | Christian Grothoff | Note Added: 0017672 | |
2021-04-02 16:04 | Christian Grothoff | Status | assigned => resolved |
2021-04-02 16:04 | Christian Grothoff | Resolution | open => fixed |
2021-04-02 16:04 | Christian Grothoff | Fixed in Version | => 0.9 |
2021-04-02 16:04 | Christian Grothoff | Note Added: 0017673 | |
2021-07-30 13:57 | Christian Grothoff | Fixed in Version | 0.9 => 0.8.1 |
2021-07-30 13:59 | Christian Grothoff | Target Version | 0.9 => 0.8.1 |
2021-07-30 14:01 | Christian Grothoff | Fixed in Version | 0.8.1 => 0.8 |
2021-07-30 14:02 | Christian Grothoff | Target Version | 0.8.1 => 0.8 |
2021-08-24 16:23 | Christian Grothoff | Status | resolved => closed |
2021-09-02 18:22 | Christian Grothoff | Changeset attached | => Taler-merchant master 385fb34f |
2021-09-02 18:23 | Christian Grothoff | Note Added: 0018354 | |
2024-01-12 14:04 | Christian Grothoff | Category | merchant backend API (C) => mechant backend |