From ae8d481e1ce9f694a42619809d2c9b6e6acf3497 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 5 Sep 2021 15:25:46 +0200 Subject: implement taler-exchange-transfer DB sharding logic --- src/exchange/taler-exchange-aggregator.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/exchange/taler-exchange-aggregator.c') diff --git a/src/exchange/taler-exchange-aggregator.c b/src/exchange/taler-exchange-aggregator.c index 893fa79f9..caa4528db 100644 --- a/src/exchange/taler-exchange-aggregator.c +++ b/src/exchange/taler-exchange-aggregator.c @@ -1034,9 +1034,22 @@ run_shard (void *cls) &s->shard_end); if (0 >= qs) { + if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + { + static struct GNUNET_TIME_Relative delay; + + GNUNET_free (s); + delay = GNUNET_TIME_randomized_backoff (delay, + GNUNET_TIME_UNIT_SECONDS); + task = GNUNET_SCHEDULER_add_delayed (delay, + &run_shard, + NULL); + return; + } GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to begin shard!\n"); - GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR != qs); + "Failed to begin shard (%d)!\n", + qs); + GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR != qs); global_ret = EXIT_FAILURE; GNUNET_SCHEDULER_shutdown (); return; -- cgit v1.2.3