use different sleep when idle vs. when conflicting in wirewatch

This commit is contained in:
Christian Grothoff 2023-01-06 13:34:01 +01:00
parent 463b3af4ea
commit 7ee7790ac4
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC

View File

@ -153,6 +153,11 @@ static struct TALER_EXCHANGEDB_Plugin *db_plugin;
*/ */
static struct GNUNET_TIME_Relative wirewatch_idle_sleep_interval; static struct GNUNET_TIME_Relative wirewatch_idle_sleep_interval;
/**
* How long do we sleep on serialization conflicts?
*/
static struct GNUNET_TIME_Relative wirewatch_conflict_sleep_interval;
/** /**
* Modulus to apply to group shards. The shard size must ultimately be a * Modulus to apply to group shards. The shard size must ultimately be a
* multiple of the batch size. Thus, if this is not a multiple of the * multiple of the batch size. Thus, if this is not a multiple of the
@ -1066,10 +1071,10 @@ history_cb (void *cls,
process_reply (reply->details.success.details, process_reply (reply->details.success.details,
reply->details.success.details_length); reply->details.success.details_length);
break; break;
/* case 0: /* case 0:
process_reply_batched (reply->details.success.details, process_reply_batched (reply->details.success.details,
reply->details.success.details_length); reply->details.success.details_length);
break;*/ break;*/
default: default:
process_reply_batched2 ((unsigned int) batch_mode, process_reply_batched2 ((unsigned int) batch_mode,
reply->details.success.details, reply->details.success.details,
@ -1200,7 +1205,9 @@ lock_shard (void *cls)
{ {
struct GNUNET_TIME_Relative rdelay; struct GNUNET_TIME_Relative rdelay;
rdelay = GNUNET_TIME_randomize (wirewatch_idle_sleep_interval); wirewatch_conflict_sleep_interval
= GNUNET_TIME_STD_BACKOFF (wirewatch_conflict_sleep_interval);
rdelay = GNUNET_TIME_randomize (wirewatch_conflict_sleep_interval);
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Serialization error tying to obtain shard %s, will try again in %s!\n", "Serialization error tying to obtain shard %s, will try again in %s!\n",
job_name, job_name,
@ -1227,6 +1234,7 @@ lock_shard (void *cls)
return; return;
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT: case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
/* continued below */ /* continued below */
wirewatch_conflict_sleep_interval = GNUNET_TIME_UNIT_ZERO;
break; break;
} }
shard_end_time = GNUNET_TIME_relative_to_absolute (delay); shard_end_time = GNUNET_TIME_relative_to_absolute (delay);