diff options
Diffstat (limited to 'src/exchange-tools/taler-exchange-dbinit.c')
-rw-r--r-- | src/exchange-tools/taler-exchange-dbinit.c | 93 |
1 files changed, 24 insertions, 69 deletions
diff --git a/src/exchange-tools/taler-exchange-dbinit.c b/src/exchange-tools/taler-exchange-dbinit.c index 7dd5c0151..41ff2ab24 100644 --- a/src/exchange-tools/taler-exchange-dbinit.c +++ b/src/exchange-tools/taler-exchange-dbinit.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2014-2022 Taler Systems SA + Copyright (C) 2014-2024 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -30,6 +30,11 @@ static int global_ret; /** + * -a option: inject auditor triggers + */ +static int inject_auditor; + +/** * -r option: do full DB reset */ static int reset_db; @@ -50,21 +55,11 @@ static int gc_db; static uint32_t num_partitions; /** - * -F option: setup a sharded database, i.e. create foreign tables/server - */ -static int shard_db; - -/** * -f option: force partitions to be created when there is only one */ static int force_create_partitions; /** - * -S option: setup a database on a shard server, creates tables with suffix shard_idx - */ -static uint32_t shard_idx; - -/** * Main function that will be run. * * @param cls closure @@ -83,6 +78,7 @@ run (void *cls, (void) cls; (void) args; (void) cfgfile; + if (NULL == (plugin = TALER_EXCHANGEDB_plugin_load (cfg))) { @@ -100,23 +96,10 @@ run (void *cls, "Could not drop tables as requested. Either database was not yet initialized, or permission denied. Consult the logs. Will still try to create new tables.\n"); } } - if (0 < shard_idx) - { - if (GNUNET_OK != - plugin->create_shard_tables (plugin->cls, - shard_idx)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Could not create shard database\n"); - global_ret = EXIT_NOTINSTALLED; - } - /* We do not want to continue if we are on a shard */ - TALER_EXCHANGEDB_plugin_unload (plugin); - plugin = NULL; - return; - } if (GNUNET_OK != - plugin->create_tables (plugin->cls)) + plugin->create_tables (plugin->cls, + force_create_partitions || num_partitions > 0, + num_partitions)) { fprintf (stderr, "Failed to initialize database.\n"); @@ -125,38 +108,6 @@ run (void *cls, global_ret = EXIT_NOPERMISSION; return; } - if (1 < - num_partitions - || ( - 1 == num_partitions - && force_create_partitions)) - { - enum GNUNET_GenericReturnValue r = GNUNET_OK; - if (shard_db) - { - r = plugin->setup_foreign_servers (plugin->cls, - num_partitions); - } - else - { - r = plugin->setup_partitions (plugin->cls, - num_partitions); - } - if (GNUNET_OK != r) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Could not setup partitions. Dropping default ones again\n"); - if (GNUNET_OK != plugin->drop_tables (plugin->cls)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Could not drop tables after failed partitioning, please delete the DB manually\n"); - } - TALER_EXCHANGEDB_plugin_unload (plugin); - plugin = NULL; - global_ret = EXIT_NOTINSTALLED; - return; - } - } if (gc_db || clear_shards) { if (GNUNET_OK != @@ -187,6 +138,15 @@ run (void *cls, } } } + if (inject_auditor) + { + if (GNUNET_SYSERR == plugin->inject_auditor_triggers (plugin->cls)) + { + fprintf (stderr, + "Injecting auditor triggers failed!\n"); + global_ret = EXIT_FAILURE; + } + } TALER_EXCHANGEDB_plugin_unload (plugin); plugin = NULL; } @@ -205,6 +165,10 @@ main (int argc, char *const *argv) { const struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_option_flag ('a', + "inject-auditor", + "inject auditor triggers", + &inject_auditor), GNUNET_GETOPT_option_flag ('g', "gc", "garbage collect database", @@ -220,17 +184,8 @@ main (int argc, GNUNET_GETOPT_option_uint ('P', "partition", "NUMBER", - "Setup a partitioned database where each table which can be partitioned holds NUMBER partitions on a single DB node (NOTE: sharding add -F for sharding)", + "Setup a partitioned database where each table which can be partitioned holds NUMBER partitions on a single DB node", &num_partitions), - GNUNET_GETOPT_option_flag ('F', - "foreign", - "Setup a sharded database with foreign servers (shards) / tables rather than a partitioned one, must be called as DB superuser.", - &shard_db), - GNUNET_GETOPT_option_uint ('S', - "shard", - "INDEX", - "Setup a shard server, creates tables with INDEX as suffix", - &shard_idx), GNUNET_GETOPT_option_flag ('f', "force", "Force partitions to be created if there is only one partition", |