summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2017-09-27 10:06:19 -0400
committerNick Vatamaniuc <nickva@users.noreply.github.com>2017-09-27 11:35:54 -0400
commit7267f926dd2521a10206a8d1d7ce53e961eba259 (patch)
tree5e46688ad0533f99d8b996d663462c3c326298d5
parent32ccd1b20e12094c75a97d068fddb266e5fb5105 (diff)
downloadcouchdb-7267f926dd2521a10206a8d1d7ce53e961eba259.tar.gz
Reduce replicator.retries_per_request value from 10 to 5
Previously an individual failed request would be tried 10 times in a row with an exponential backoff starting at 0.25 seconds. So the intervals in seconds would be: `0.25, 0.5, 1, 2, 4, 8, 16, 32, 64, 128` For a total of about 250 seconds (or about 4 minutes). This made sense before the scheduling replicator because if a replication job had crashed in the startup phase enough times it would not be retried anymore. With a scheduling replicator, it makes more sense to stop the whole task, and let the scheduling replicatgor retry later. `retries_per_request` then becomes something used mainly for short intermettent network issues. The new retry schedule is `0.25, 0.5, 1, 2, 4` Or about 8 seconds. An additional benefit when the job is stopped quicker, the user can find out about the problem sooner from the _scheduler/docs and _scheduler/jobs status endpoints and can rectify the problem. Otherwise a single request retrying for 4 minutes would be indicated there as the job is healthy and running. Fixes #810
-rw-r--r--rel/overlay/etc/default.ini2
-rw-r--r--src/couch_replicator/src/couch_replicator_api_wrap.hrl2
-rw-r--r--src/couch_replicator/src/couch_replicator_docs.erl2
3 files changed, 3 insertions, 3 deletions
diff --git a/rel/overlay/etc/default.ini b/rel/overlay/etc/default.ini
index 43a40fbcc..7cb805e94 100644
--- a/rel/overlay/etc/default.ini
+++ b/rel/overlay/etc/default.ini
@@ -369,7 +369,7 @@ connection_timeout = 30000
; Request timeout
;request_timeout = infinity
; If a request fails, the replicator will retry it up to N times.
-retries_per_request = 10
+retries_per_request = 5
; Use checkpoints
;use_checkpoints = true
; Checkpoint interval
diff --git a/src/couch_replicator/src/couch_replicator_api_wrap.hrl b/src/couch_replicator/src/couch_replicator_api_wrap.hrl
index fc940545a..d2e0fdff5 100644
--- a/src/couch_replicator/src/couch_replicator_api_wrap.hrl
+++ b/src/couch_replicator/src/couch_replicator_api_wrap.hrl
@@ -21,7 +21,7 @@
],
timeout, % milliseconds
ibrowse_options = [],
- retries = 10,
+ retries = 5,
wait = 250, % milliseconds
httpc_pool = nil,
http_connections,
diff --git a/src/couch_replicator/src/couch_replicator_docs.erl b/src/couch_replicator/src/couch_replicator_docs.erl
index a49d692d9..28855eb0f 100644
--- a/src/couch_replicator/src/couch_replicator_docs.erl
+++ b/src/couch_replicator/src/couch_replicator_docs.erl
@@ -466,7 +466,7 @@ make_options(Props) ->
DefBatchSize = config:get("replicator", "worker_batch_size", "500"),
DefConns = config:get("replicator", "http_connections", "20"),
DefTimeout = config:get("replicator", "connection_timeout", "30000"),
- DefRetries = config:get("replicator", "retries_per_request", "10"),
+ DefRetries = config:get("replicator", "retries_per_request", "5"),
UseCheckpoints = config:get("replicator", "use_checkpoints", "true"),
DefCheckpointInterval = config:get("replicator", "checkpoint_interval",
"30000"),