From f00a49e40c035e5345ef90b8fae134467454c97b Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Fri, 30 Sep 2016 13:47:46 +0200 Subject: fixing aggregator hanging after bank's error --- src/exchange/taler-exchange-aggregator.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/exchange/taler-exchange-aggregator.c b/src/exchange/taler-exchange-aggregator.c index 6b261662e..9a3c2a1d4 100644 --- a/src/exchange/taler-exchange-aggregator.c +++ b/src/exchange/taler-exchange-aggregator.c @@ -599,6 +599,7 @@ run_aggregation (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to obtain database session!\n"); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); return; } if (GNUNET_OK != @@ -608,6 +609,7 @@ run_aggregation (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to start database transaction!\n"); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); return; } au = GNUNET_new (struct AggregationUnit); @@ -629,6 +631,7 @@ run_aggregation (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to execute deposit iteration!\n"); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); return; } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, @@ -683,6 +686,7 @@ run_aggregation (void *cls) db_plugin->rollback (db_plugin->cls, session); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); return; } @@ -709,6 +713,7 @@ run_aggregation (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to start database transaction!\n"); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); GNUNET_free_non_null (au->additional_rows); if (NULL != au->wire) json_decref (au->wire); @@ -892,6 +897,7 @@ wire_confirm_cb (void *cls, db_plugin->rollback (db_plugin->cls, session); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); GNUNET_free (wpd); wpd = NULL; return; @@ -905,6 +911,7 @@ wire_confirm_cb (void *cls, db_plugin->rollback (db_plugin->cls, session); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); GNUNET_free (wpd); wpd = NULL; return; @@ -964,6 +971,7 @@ wire_prepare_cb (void *cls, db_plugin->rollback (db_plugin->cls, wpd->session); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); GNUNET_free (wpd); wpd = NULL; return; @@ -1006,6 +1014,7 @@ run_transfers (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to start database transaction!\n"); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); return; } wpd = GNUNET_new (struct WirePrepareData); @@ -1020,6 +1029,7 @@ run_transfers (void *cls) db_plugin->rollback (db_plugin->cls, session); global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); GNUNET_free (wpd); wpd = NULL; return; -- cgit v1.2.3