summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
index 73d40a40e6f..21a9833c3e0 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
@@ -11,6 +11,7 @@ import com.yahoo.vespa.config.ConnectionPool;
import java.io.File;
import java.time.Duration;
+import java.time.Instant;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -53,6 +54,7 @@ public class FileReferenceDownloader {
}
private void waitUntilDownloadStarted(FileReferenceDownload fileReferenceDownload) {
+ Instant end = Instant.now().plus(downloadTimeout);
FileReference fileReference = fileReferenceDownload.fileReference();
int retryCount = 0;
Connection connection = connectionPool.getCurrent();
@@ -69,7 +71,7 @@ public class FileReferenceDownloader {
// exist on just one config server, and which one could be different for each file reference), so we
// should get a new connection for every retry
connection = connectionPool.switchConnection(connection);
- } while (retryCount < 5);
+ } while (retryCount < 5 || Instant.now().isAfter(end));
fileReferenceDownload.future().completeExceptionally(new RuntimeException("Failed getting " + fileReference));
downloads.remove(fileReference);