From 3322051a39621448ed4d893a96de465e5ab86e6f Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 20 Jun 2017 15:00:28 +0200 Subject: fix hanging db --- src/backend/taler-merchant-httpd_refund.c | 10 ++++++++++ src/backenddb/plugin_merchantdb_postgres.c | 18 ++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/backend/taler-merchant-httpd_refund.c b/src/backend/taler-merchant-httpd_refund.c index 2504333e..229bbe50 100644 --- a/src/backend/taler-merchant-httpd_refund.c +++ b/src/backend/taler-merchant-httpd_refund.c @@ -250,6 +250,16 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh, " or too big to be paid back"); } + if (GNUNET_SYSERR == res) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Could not commit refund increase\n"); + GNUNET_JSON_parse_free (spec); + return TMH_RESPONSE_reply_internal_error (connection, + TALER_EC_NONE, + "Internal hard db error"); + } + /** * Return to the frontend at this point. The frontend will then return * a "402 Payment required" carrying a "X-Taler-Refund-Url: www" diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c index 679b0552..dd45163e 100644 --- a/src/backenddb/plugin_merchantdb_postgres.c +++ b/src/backenddb/plugin_merchantdb_postgres.c @@ -2156,6 +2156,7 @@ postgres_increase_refund_for_contract (void *cls, params, &process_deposits_cb, &ctx); + switch (ret) { case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS: @@ -2170,18 +2171,15 @@ postgres_increase_refund_for_contract (void *cls, return GNUNET_SYSERR; default: /* Got one or more deposits */ + if (GNUNET_OK != postgres_commit (cls)) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to commit transaction increasing refund\n"); + return GNUNET_SYSERR; + } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Committed db transaction\n"); return ctx.err; - break; } - - if (GNUNET_OK != postgres_commit (cls)) - { - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, - "Failed to commit transaction increasing refund\n"); - return GNUNET_SYSERR; - } - - return GNUNET_OK; } -- cgit v1.2.3