diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-09-05 15:25:46 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-09-05 15:25:57 +0200 |
commit | ae8d481e1ce9f694a42619809d2c9b6e6acf3497 (patch) | |
tree | 1b0554139c53f7dde177d5cd74a9b3800b3adb33 /src/exchange/taler-exchange-aggregator.c | |
parent | adc6c53b5c7e08ff6eba180f872a8a8f8f94cd65 (diff) | |
download | exchange-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.c | 17 |
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; |