summaryrefslogtreecommitdiff
path: root/src/exchange/taler-exchange-aggregator.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-09-05 15:25:46 +0200
committerChristian Grothoff <christian@grothoff.org>2021-09-05 15:25:57 +0200
commitae8d481e1ce9f694a42619809d2c9b6e6acf3497 (patch)
tree1b0554139c53f7dde177d5cd74a9b3800b3adb33 /src/exchange/taler-exchange-aggregator.c
parentadc6c53b5c7e08ff6eba180f872a8a8f8f94cd65 (diff)
downloadexchange-ae8d481e1ce9f694a42619809d2c9b6e6acf3497.tar.gz
exchange-ae8d481e1ce9f694a42619809d2c9b6e6acf3497.tar.bz2
exchange-ae8d481e1ce9f694a42619809d2c9b6e6acf3497.zip
implement taler-exchange-transfer DB sharding logic
Diffstat (limited to 'src/exchange/taler-exchange-aggregator.c')
-rw-r--r--src/exchange/taler-exchange-aggregator.c17
1 files changed, 15 insertions, 2 deletions
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;