-misc bugfixes
This commit is contained in:
parent
303e47e24b
commit
87f5d8211e
@ -357,7 +357,6 @@ TALER_BANK_transfer (
|
||||
return NULL;
|
||||
}
|
||||
json_decref (transfer_obj);
|
||||
|
||||
th->job = GNUNET_CURL_job_add2 (ctx,
|
||||
eh,
|
||||
th->post_ctx.headers,
|
||||
|
@ -988,6 +988,7 @@ make_transfer (
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
*ret_row_id = t->row_id;
|
||||
*timestamp = t->date;
|
||||
GNUNET_assert (0 ==
|
||||
pthread_mutex_unlock (&h->uuid_map_lock));
|
||||
return GNUNET_OK;
|
||||
|
@ -54,28 +54,20 @@ MAX_DEBT_BANK = EUR:1000000000000000.0
|
||||
[benchmark]
|
||||
USER_PAYTO_URI = payto://x-taler-bank/localhost:8082/42
|
||||
|
||||
[exchange-account-2]
|
||||
# What is the payto://-URL of the exchange (to generate wire response)
|
||||
PAYTO_URI = "payto://x-taler-bank/localhost:8082/Exchange"
|
||||
[exchange-account-test]
|
||||
# What is the bank account (with the "Taler Bank" demo system)? Must end with "/".
|
||||
PAYTO_URI = "payto://x-taler-bank/localhost/Exchange"
|
||||
# Authentication information for basic authentication
|
||||
ENABLE_DEBIT = YES
|
||||
ENABLE_CREDIT = YES
|
||||
|
||||
[exchange-accountcredentials-2]
|
||||
# What is the bank account (with the "Taler Bank" demo system)? Must end with "/".
|
||||
WIRE_GATEWAY_URL = http://localhost:8082/taler-wire-gateway/Exchange/
|
||||
# Authentication information for basic authentication
|
||||
[exchange-accountcredentials-test]
|
||||
WIRE_GATEWAY_URL = http://localhost:8082/Exchange/
|
||||
WIRE_GATEWAY_AUTH_METHOD = "basic"
|
||||
USERNAME = Exchange
|
||||
PASSWORD = x
|
||||
|
||||
|
||||
[exchange-account-aggregator]
|
||||
# What is the payto://-URL of the exchange (to generate wire response)
|
||||
PAYTO_URI = "payto://aggregator-benchmark/exchangeacc"
|
||||
ENABLE_DEBIT = YES
|
||||
|
||||
|
||||
|
||||
# Sections starting with "coin_" specify which denominations
|
||||
# the exchange should support (and their respective fee structure)
|
||||
[coin_eur_ct_1]
|
||||
|
@ -370,7 +370,7 @@ work (void *cls)
|
||||
rnd2 = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_NONCE,
|
||||
UINT64_MAX);
|
||||
GNUNET_asprintf (&acc,
|
||||
"payto://aggregator-benchmark/account-%llX-%llX",
|
||||
"payto://x-taler-bank/localhost:8082/account-%llX-%llX",
|
||||
(unsigned long long) rnd1,
|
||||
(unsigned long long) rnd2);
|
||||
json_wire = GNUNET_JSON_PACK (
|
||||
@ -548,7 +548,7 @@ run (void *cls,
|
||||
sizeof (master_sig));
|
||||
if (0 >
|
||||
plugin->insert_wire_fee (plugin->cls,
|
||||
"aggregator-benchmark",
|
||||
"x-taler-bank",
|
||||
ws,
|
||||
we,
|
||||
&wire_fee,
|
||||
|
@ -33,6 +33,11 @@
|
||||
*/
|
||||
#define MAXIMUM_BATCH_SIZE 1024
|
||||
|
||||
/**
|
||||
* How often will we retry a request (given certain
|
||||
* HTTP status codes) before giving up?
|
||||
*/
|
||||
#define MAX_RETRIES 16
|
||||
|
||||
/**
|
||||
* Information about our work shard.
|
||||
@ -104,6 +109,17 @@ struct WirePrepareData
|
||||
*/
|
||||
unsigned long long row_id;
|
||||
|
||||
/**
|
||||
* Number of bytes allocated after this struct
|
||||
* with the prewire data.
|
||||
*/
|
||||
size_t buf_size;
|
||||
|
||||
/**
|
||||
* How often did we retry so far?
|
||||
*/
|
||||
unsigned int retries;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -217,16 +233,6 @@ static void
|
||||
shutdown_task (void *cls)
|
||||
{
|
||||
(void) cls;
|
||||
if (NULL != ctx)
|
||||
{
|
||||
GNUNET_CURL_fini (ctx);
|
||||
ctx = NULL;
|
||||
}
|
||||
if (NULL != rc)
|
||||
{
|
||||
GNUNET_CURL_gnunet_rc_destroy (rc);
|
||||
rc = NULL;
|
||||
}
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||
"Running shutdown\n");
|
||||
if (NULL != task)
|
||||
@ -241,6 +247,16 @@ shutdown_task (void *cls)
|
||||
db_plugin = NULL;
|
||||
TALER_EXCHANGEDB_unload_accounts ();
|
||||
cfg = NULL;
|
||||
if (NULL != ctx)
|
||||
{
|
||||
GNUNET_CURL_fini (ctx);
|
||||
ctx = NULL;
|
||||
}
|
||||
if (NULL != rc)
|
||||
{
|
||||
GNUNET_CURL_gnunet_rc_destroy (rc);
|
||||
rc = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -410,6 +426,36 @@ wire_confirm_cb (void *cls,
|
||||
wpd->row_id);
|
||||
/* continued below */
|
||||
break;
|
||||
case 0:
|
||||
case MHD_HTTP_TOO_MANY_REQUESTS:
|
||||
case MHD_HTTP_INTERNAL_SERVER_ERROR:
|
||||
case MHD_HTTP_BAD_GATEWAY:
|
||||
case MHD_HTTP_SERVICE_UNAVAILABLE:
|
||||
case MHD_HTTP_GATEWAY_TIMEOUT:
|
||||
wpd->retries++;
|
||||
if (wpd->retries < MAX_RETRIES)
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||
"Wire transfer %llu failed (%u), trying again\n",
|
||||
(unsigned long long) wpd->row_id,
|
||||
http_status_code);
|
||||
wpd->eh = TALER_BANK_transfer (ctx,
|
||||
wpd->wa->auth,
|
||||
&wpd[1],
|
||||
wpd->buf_size,
|
||||
&wire_confirm_cb,
|
||||
wpd);
|
||||
return;
|
||||
}
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
"Wire transaction %llu failed: %u/%d\n",
|
||||
(unsigned long long) wpd->row_id,
|
||||
http_status_code,
|
||||
ec);
|
||||
db_plugin->rollback (db_plugin->cls);
|
||||
global_ret = EXIT_FAILURE;
|
||||
GNUNET_SCHEDULER_shutdown ();
|
||||
return;
|
||||
default:
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
"Wire transfer %llu failed: %u/%d\n",
|
||||
@ -469,7 +515,6 @@ wire_prepare_cb (void *cls,
|
||||
const char *buf,
|
||||
size_t buf_size)
|
||||
{
|
||||
const struct TALER_EXCHANGEDB_AccountInfo *wa;
|
||||
struct WirePrepareData *wpd;
|
||||
|
||||
(void) cls;
|
||||
@ -491,7 +536,12 @@ wire_prepare_cb (void *cls,
|
||||
GNUNET_SCHEDULER_shutdown ();
|
||||
return;
|
||||
}
|
||||
wpd = GNUNET_new (struct WirePrepareData);
|
||||
wpd = GNUNET_malloc (sizeof (struct WirePrepareData)
|
||||
+ buf_size);
|
||||
memcpy (&wpd[1],
|
||||
buf,
|
||||
buf_size);
|
||||
wpd->buf_size = buf_size;
|
||||
wpd->row_id = rowid;
|
||||
GNUNET_CONTAINER_DLL_insert (wpd_head,
|
||||
wpd_tail,
|
||||
@ -510,9 +560,8 @@ wire_prepare_cb (void *cls,
|
||||
GNUNET_SCHEDULER_shutdown ();
|
||||
return;
|
||||
}
|
||||
wa = wpd->wa;
|
||||
wpd->eh = TALER_BANK_transfer (ctx,
|
||||
wa->auth,
|
||||
wpd->wa->auth,
|
||||
buf,
|
||||
buf_size,
|
||||
&wire_confirm_cb,
|
||||
@ -580,6 +629,10 @@ run_transfers (void *cls)
|
||||
NULL);
|
||||
return;
|
||||
}
|
||||
/* cap number of parallel connections to a reasonable
|
||||
limit for concurrent requests to the bank */
|
||||
limit = GNUNET_MIN (limit,
|
||||
256);
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||
"Checking for %lld pending wire transfers [%llu-...)\n",
|
||||
(long long) limit,
|
||||
|
Loading…
Reference in New Issue
Block a user