about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-08-30T13·48+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-08-30T13·48+0200
commit6631a6e1a15784214bae468a4fdd3168aeef4ab7 (patch)
tree04e0c098bf6ef748b4861e34ffaedde732acfa13
parent97b1af1cbe03a48793426bee883ad9c4c9fd7db8 (diff)
Increase the sleep time between download retries
-rw-r--r--src/libstore/download.cc2
-rw-r--r--src/libstore/download.hh1
-rw-r--r--src/libstore/http-binary-cache-store.cc3
3 files changed, 4 insertions, 2 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 13c665a40ca8..5305a48950c4 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -230,7 +230,7 @@ struct CurlDownloader : public Downloader
             } catch (DownloadError & e) {
                 attempt++;
                 if (e.error != Transient || attempt >= options.tries) throw;
-                auto ms = 25 * (1 << (attempt - 1));
+                auto ms = options.baseRetryTimeMs * (1 << (attempt - 1));
                 printMsg(lvlError, format("warning: %s; retrying in %d ms") % e.what() % ms);
                 std::this_thread::sleep_for(std::chrono::milliseconds(ms));
             }
diff --git a/src/libstore/download.hh b/src/libstore/download.hh
index 08618ba1c95d..f22e688645b0 100644
--- a/src/libstore/download.hh
+++ b/src/libstore/download.hh
@@ -14,6 +14,7 @@ struct DownloadOptions
     enum { yes, no, automatic } showProgress = yes;
     bool head = false;
     size_t tries = 1;
+    unsigned int baseRetryTimeMs = 100;
 };
 
 struct DownloadResult
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index 42e9099b8e20..bdcd2fd3998b 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -80,7 +80,8 @@ protected:
         auto downloader(downloaders.get());
         DownloadOptions options;
         options.showProgress = DownloadOptions::no;
-        options.tries = 3;
+        options.tries = 5;
+        options.baseRetryTimeMs = 1000;
         try {
             return downloader->download(cacheUri + "/" + path, options).data;
         } catch (DownloadError & e) {