diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-01-18 11:23:31 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-01-18 11:23:31 +0100 |
commit | 41afb315362492bcf0dc81776442e3cbd1202199 (patch) | |
tree | a7593e5ee045d0fc36f7064ba50f3799ef299141 /src/backend | |
parent | 2b981fec91b0e394cd20b3a9a4b3100e92855285 (diff) | |
download | merchant-41afb315362492bcf0dc81776442e3cbd1202199.tar.gz merchant-41afb315362492bcf0dc81776442e3cbd1202199.tar.bz2 merchant-41afb315362492bcf0dc81776442e3cbd1202199.zip |
add missing rollbacks to fix some transactions
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/taler-merchant-httpd_post-tips-ID-pickup.c | 12 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_private-post-transfers.c | 2 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/backend/taler-merchant-httpd_post-tips-ID-pickup.c b/src/backend/taler-merchant-httpd_post-tips-ID-pickup.c index f6a3ef4a..3de76848 100644 --- a/src/backend/taler-merchant-httpd_post-tips-ID-pickup.c +++ b/src/backend/taler-merchant-httpd_post-tips-ID-pickup.c @@ -830,6 +830,7 @@ RETRY: } if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) { + TMH_db->rollback (TMH_db->cls); MHD_suspend_connection (connection); GNUNET_CONTAINER_DLL_insert (pc_head, pc_tail, @@ -837,7 +838,6 @@ RETRY: pc->tt = GNUNET_SCHEDULER_add_delayed (EXCHANGE_TIMEOUT, &do_timeout, pc); - TMH_db->rollback (TMH_db->cls); return MHD_YES; } } @@ -902,10 +902,16 @@ RETRY: &exchange_url, &pc->reserve_priv); if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + { + TMH_db->rollback (TMH_db->cls); goto RETRY; + } if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) + { + TMH_db->rollback (TMH_db->cls); return reply_lookup_tip_failed (connection, qs); + } if (0 == GNUNET_TIME_absolute_get_remaining (expiration).rel_value_us) { TMH_db->rollback (TMH_db->cls); @@ -919,7 +925,7 @@ RETRY: &total_authorized, &total_picked_up)) { - GNUNET_break (0); + GNUNET_break_op (0); TMH_db->rollback (TMH_db->cls); return TALER_MHD_reply_with_error (connection, MHD_HTTP_INTERNAL_SERVER_ERROR, @@ -931,7 +937,7 @@ RETRY: TALER_amount_cmp (&total_remaining, &pc->total_requested)) { - GNUNET_break (0); + GNUNET_break_op (0); TMH_db->rollback (TMH_db->cls); return TALER_MHD_reply_with_error (connection, MHD_HTTP_BAD_REQUEST, diff --git a/src/backend/taler-merchant-httpd_private-post-transfers.c b/src/backend/taler-merchant-httpd_private-post-transfers.c index 178c609c..dda8bf11 100644 --- a/src/backend/taler-merchant-httpd_private-post-transfers.c +++ b/src/backend/taler-merchant-httpd_private-post-transfers.c @@ -498,6 +498,8 @@ retry: } if (0 <= qs) break; /* success! */ + /* soft failure, rollback and try again */ + TMH_db->rollback (TMH_db->cls); } if (GNUNET_DB_STATUS_SOFT_ERROR == qs) { |