commit 23243f568782339b16ca1e7c7eea78567b976b97
parent 2949329f5793f948cb2c5aa6fe9d083aee1d9bd7
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Sun, 19 Jul 2026 12:21:12 +0200
treat no-shard available as success
Diffstat:
3 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/src/exchange/taler-exchange-aggregator.c b/src/exchange/taler-exchange-aggregator.c
@@ -1285,9 +1285,9 @@ run_shard (void *cls)
1U + INT32_MAX,
&s->shard_start,
&s->shard_end);
- if (0 >= qs)
+ switch (qs)
{
- if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
+ case GNUNET_DB_STATUS_SOFT_ERROR:
{
static struct GNUNET_TIME_Relative delay;
@@ -1300,14 +1300,22 @@ run_shard (void *cls)
NULL);
return;
}
+ case GNUNET_DB_STATUS_HARD_ERROR:
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to begin shard (%d)!\n",
qs);
- GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR != qs);
global_ret = EXIT_FAILURE;
GNUNET_SCHEDULER_shutdown ();
GNUNET_free (s);
return;
+ case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "No open shard available\n");
+ GNUNET_SCHEDULER_shutdown ();
+ GNUNET_free (s);
+ return;
+ case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+ break;
}
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Starting shard [%u:%u]!\n",
diff --git a/src/exchangedb/begin_revolving_shard.c b/src/exchangedb/begin_revolving_shard.c
@@ -34,7 +34,6 @@ TALER_EXCHANGEDB_begin_revolving_shard (
uint32_t *start_row,
uint32_t *end_row)
{
-
GNUNET_assert (shard_limit <= 1U + (uint32_t) INT_MAX);
GNUNET_assert (shard_limit > 0);
GNUNET_assert (shard_size > 0);
@@ -61,7 +60,7 @@ TALER_EXCHANGEDB_begin_revolving_shard (
&last_end),
GNUNET_PQ_result_spec_end
};
- /* Used in #postgres_begin_revolving_shard() */
+
PREPARE (pg,
"get_last_revolving_shard",
"SELECT"
@@ -83,12 +82,12 @@ TALER_EXCHANGEDB_begin_revolving_shard (
case GNUNET_DB_STATUS_SOFT_ERROR:
TALER_EXCHANGEDB_rollback (pg);
continue;
- case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
- *start_row = 1U + last_end;
- break;
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
*start_row = 0; /* base-case: no shards yet */
break; /* continued below */
+ case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+ *start_row = 1U + last_end;
+ break;
}
} /* get_last_shard */
@@ -136,14 +135,14 @@ TALER_EXCHANGEDB_begin_revolving_shard (
case GNUNET_DB_STATUS_SOFT_ERROR:
TALER_EXCHANGEDB_rollback (pg);
continue;
- case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
- /* continued below (with commit) */
- break;
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
/* someone else got this shard already,
try again */
TALER_EXCHANGEDB_rollback (pg);
continue;
+ case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+ /* continued below (with commit) */
+ break;
}
} /* end create fresh reovlving shard */
else
diff --git a/src/include/exchange-database/begin_revolving_shard.h b/src/include/exchange-database/begin_revolving_shard.h
@@ -37,12 +37,12 @@
* @return transaction status code
*/
enum GNUNET_DB_QueryStatus
-TALER_EXCHANGEDB_begin_revolving_shard (struct
- TALER_EXCHANGEDB_PostgresContext *pg,
- const char *job_name,
- uint32_t shard_size,
- uint32_t shard_limit,
- uint32_t *start_row,
- uint32_t *end_row);
+TALER_EXCHANGEDB_begin_revolving_shard (
+ struct TALER_EXCHANGEDB_PostgresContext *pg,
+ const char *job_name,
+ uint32_t shard_size,
+ uint32_t shard_limit,
+ uint32_t *start_row,
+ uint32_t *end_row);
#endif