[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-exchange] branch master updated: taler-exchange-transfer: ensure
From: |
gnunet |
Subject: |
[taler-exchange] branch master updated: taler-exchange-transfer: ensure batches stay in their range |
Date: |
Sun, 05 Sep 2021 16:44:10 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository exchange.
The following commit(s) were added to refs/heads/master by this push:
new 317a70ae taler-exchange-transfer: ensure batches stay in their range
317a70ae is described below
commit 317a70aeb32e9e18f67b1a1be2751ae67f80bd87
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Sep 5 16:43:56 2021 +0200
taler-exchange-transfer: ensure batches stay in their range
---
src/exchange/taler-exchange-transfer.c | 80 +++++++++++++++++++++-------------
1 file changed, 50 insertions(+), 30 deletions(-)
diff --git a/src/exchange/taler-exchange-transfer.c
b/src/exchange/taler-exchange-transfer.c
index b93d1460..46093d89 100644
--- a/src/exchange/taler-exchange-transfer.c
+++ b/src/exchange/taler-exchange-transfer.c
@@ -325,6 +325,46 @@ static void
select_shard (void *cls);
+/**
+ * We are done with the current batch. Commit
+ * and move on.
+ */
+static void
+batch_done (void)
+{
+ /* batch done */
+ switch (commit_or_warn ())
+ {
+ case GNUNET_DB_STATUS_SOFT_ERROR:
+ /* try again */
+ GNUNET_assert (NULL == task);
+ task = GNUNET_SCHEDULER_add_now (&run_transfers,
+ NULL);
+ return;
+ case GNUNET_DB_STATUS_HARD_ERROR:
+ GNUNET_break (0);
+ global_ret = EXIT_FAILURE;
+ GNUNET_SCHEDULER_shutdown ();
+ return;
+ case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
+ shard->batch_start = shard->batch_end + 1;
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Batch complete\n");
+ /* continue with #run_transfers(), just to guard
+ against the unlikely case that there are more. */
+ GNUNET_assert (NULL == task);
+ task = GNUNET_SCHEDULER_add_now (&run_transfers,
+ NULL);
+ return;
+ default:
+ GNUNET_break (0);
+ global_ret = EXIT_FAILURE;
+ GNUNET_SCHEDULER_shutdown ();
+ return;
+ }
+}
+
+
/**
* Function called with the result from the execute step.
* On success, we mark the respective wire transfer as finished,
@@ -408,36 +448,7 @@ wire_confirm_cb (void *cls,
}
if (NULL != wpd_head)
return; /* wait for other queries to complete */
- /* batch done */
- switch (commit_or_warn ())
- {
- case GNUNET_DB_STATUS_SOFT_ERROR:
- /* try again */
- GNUNET_assert (NULL == task);
- task = GNUNET_SCHEDULER_add_now (&run_transfers,
- NULL);
- return;
- case GNUNET_DB_STATUS_HARD_ERROR:
- GNUNET_break (0);
- global_ret = EXIT_FAILURE;
- GNUNET_SCHEDULER_shutdown ();
- return;
- case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
- shard->batch_start = shard->batch_end + 1;
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Batch complete\n");
- /* continue with #run_transfers(), just to guard
- against the unlikely case that there are more. */
- GNUNET_assert (NULL == task);
- task = GNUNET_SCHEDULER_add_now (&run_transfers,
- NULL);
- return;
- default:
- GNUNET_break (0);
- global_ret = EXIT_FAILURE;
- GNUNET_SCHEDULER_shutdown ();
- return;
- }
+ batch_done ();
}
@@ -462,6 +473,15 @@ wire_prepare_cb (void *cls,
struct WirePrepareData *wpd;
(void) cls;
+ if (rowid >= shard->shard_end)
+ {
+ /* skip */
+ shard->batch_end = shard->shard_end - 1;
+ if (NULL != wpd_head)
+ return;
+ batch_done ();
+ return;
+ }
if ( (NULL == wire_method) ||
(NULL == buf) )
{
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-exchange] branch master updated: taler-exchange-transfer: ensure batches stay in their range,
gnunet <=