From 0b9ffa874f7dcf9e39061ec3dc066ea128a90aee Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 10 Dec 2017 19:15:15 +0100 Subject: add -r command line option to wirewatch --- src/exchange/taler-exchange-wirewatch.c | 50 ++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 19 deletions(-) (limited to 'src/exchange') diff --git a/src/exchange/taler-exchange-wirewatch.c b/src/exchange/taler-exchange-wirewatch.c index 7fbc0b883..e8785942c 100644 --- a/src/exchange/taler-exchange-wirewatch.c +++ b/src/exchange/taler-exchange-wirewatch.c @@ -116,6 +116,11 @@ static int delay; */ static int test_mode; +/** + * Are we running from scratch and should re-process all transactions? + */ +static int reset_mode; + /** * Next task to run, if any. */ @@ -443,26 +448,29 @@ find_transfers (void *cls) GNUNET_SCHEDULER_shutdown (); return; } - qs = db_plugin->get_latest_reserve_in_reference (db_plugin->cls, - session, - &start_off, - &start_off_size); - if (GNUNET_DB_STATUS_HARD_ERROR == qs) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to obtain starting point for montoring from database!\n"); - global_ret = GNUNET_SYSERR; - GNUNET_SCHEDULER_shutdown (); - return; - } - if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + if (! reset_mode) { - /* try again */ - db_plugin->rollback (db_plugin->cls, - session); - task = GNUNET_SCHEDULER_add_now (&find_transfers, - NULL); - return; + qs = db_plugin->get_latest_reserve_in_reference (db_plugin->cls, + session, + &start_off, + &start_off_size); + if (GNUNET_DB_STATUS_HARD_ERROR == qs) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to obtain starting point for montoring from database!\n"); + global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); + return; + } + if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + { + /* try again */ + db_plugin->rollback (db_plugin->cls, + session); + task = GNUNET_SCHEDULER_add_now (&find_transfers, + NULL); + return; + } } delay = GNUNET_YES; hh = wire_plugin->get_history (wire_plugin->cls, @@ -535,6 +543,10 @@ main (int argc, "test", "run in test mode and exit when idle", &test_mode), + GNUNET_GETOPT_option_flag ('r', + "reset", + "start fresh with all transactions in the history", + &reset_mode), GNUNET_GETOPT_OPTION_END }; -- cgit v1.2.3