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) | |
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 893fa79f..caa4528d 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; | 
