fix taler-auditor-sync: needs two plugins running in parallel with their own prepare counters

This commit is contained in:
Christian Grothoff 2022-10-22 14:46:52 +02:00
parent c4bbc4ac56
commit cedcde4939
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
3 changed files with 18 additions and 4 deletions

View File

@ -392,7 +392,7 @@ do_sync (void *cls)
* @param value actual value of the option (a string)
* @return #GNUNET_OK
*/
static int
static enum GNUNET_GenericReturnValue
set_filename (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
void *scls,
const char *option,

View File

@ -62,6 +62,9 @@ function check_with_database()
psql -Aqt talercheck-in -q -1 -f $1.sql >/dev/null || exit_skip "Failed to load database"
echo -n "."
echo "Please run:"
echo "taler-auditor-sync -s test-sync-in.conf -d test-sync-out.conf -t"
bash
taler-auditor-sync -s test-sync-in.conf -d test-sync-out.conf -t
# cs_nonce_locks excluded: no point

View File

@ -108,9 +108,19 @@ struct PostgresClosure
*/
#define PREPARE(pg,name,sql) \
do { \
static unsigned long long prep_cnt; \
static struct { \
unsigned long long cnt; \
struct PostgresClosure *pg; \
} preps[2]; /* 2 ctrs for taler-auditor-sync*/ \
unsigned int off = 0; \
\
if (prep_cnt < pg->prep_gen) \
while ( (NULL != preps[off].pg) && \
(pg != preps[off].pg) && \
(off < sizeof(preps) / sizeof(*preps)) ) \
off++; \
GNUNET_assert (off < \
sizeof(preps) / sizeof(*preps)); \
if (preps[off].cnt < pg->prep_gen) \
{ \
struct GNUNET_PQ_PreparedStatement ps[] = { \
GNUNET_PQ_make_prepare (name, sql), \
@ -124,7 +134,8 @@ struct PostgresClosure
GNUNET_break (0); \
return GNUNET_DB_STATUS_HARD_ERROR; \
} \
prep_cnt = pg->prep_gen; \
preps[off].pg = pg; \
preps[off].cnt = pg->prep_gen; \
} \
} while (0)