summaryrefslogtreecommitdiffstats
path: root/filedistribution
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-04-05 13:06:30 +0200
committerGitHub <noreply@github.com>2018-04-05 13:06:30 +0200
commit97bf0d647fd2f3aee965d6fe31654a4c1b3c740d (patch)
treea41f072422a2a396098690cfe250f69909e5e38b /filedistribution
parentd578e0d5951ace54b4caddb9c66b5274fdf8689a (diff)
parentebab8a3e2e2183f17e6002f5906b113ea23a5048 (diff)
Merge pull request #5465 from vespa-engine/hmusum/do-not-queue-for-download-if-already-downloading
Do not download only if another download for the same file reference …
Diffstat (limited to 'filedistribution')
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java3
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java8
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java4
3 files changed, 7 insertions, 8 deletions
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java
index 3b15d5c83b5..2f5fc043f97 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java
@@ -105,8 +105,7 @@ public class FileDistributionRpcServer {
public final void setFileReferencesToDownload(Request req) {
Arrays.stream(req.parameters().get(0).asStringArray())
.map(FileReference::new)
- .forEach(fileReference -> downloader.queueForAsyncDownload(
- new FileReferenceDownload(fileReference)));
+ .forEach(fileReference -> downloader.download(new FileReferenceDownload(fileReference)));
req.returnValues().add(new Int32Value(0));
}
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
index c9f29197854..9aa49f57896 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
@@ -74,7 +74,7 @@ public class FileDownloader {
} else {
log.log(LogLevel.DEBUG, () -> "File reference '" + fileReference.value() + "' not found in " +
directory.getAbsolutePath() + ", starting download");
- return queueForAsyncDownload(fileReferenceDownload, timeout);
+ return download(fileReferenceDownload);
}
}
@@ -106,7 +106,7 @@ public class FileDownloader {
return Optional.empty();
}
- public synchronized Future<Optional<File>> queueForAsyncDownload(FileReferenceDownload fileReferenceDownload, Duration timeout) {
+ public synchronized Future<Optional<File>> download(FileReferenceDownload fileReferenceDownload) {
FileReference fileReference = fileReferenceDownload.fileReference();
Future<Optional<File>> inProgress = fileReferenceDownloader.addDownloadListener(fileReference, () -> getFile(fileReferenceDownload));
if (inProgress != null) {
@@ -114,12 +114,12 @@ public class FileDownloader {
return inProgress;
}
- Future<Optional<File>> future = queueForAsyncDownload(fileReferenceDownload);
+ Future<Optional<File>> future = queueForDownload(fileReferenceDownload);
log.log(LogLevel.DEBUG, () -> "Queued '" + fileReference.value() + "' for download with timeout " + timeout);
return future;
}
- public Future<Optional<File>> queueForAsyncDownload(FileReferenceDownload fileReferenceDownload) {
+ private Future<Optional<File>> queueForDownload(FileReferenceDownload fileReferenceDownload) {
fileReferenceDownloader.addToDownloadQueue(fileReferenceDownload);
return fileReferenceDownload.future();
}
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
index 4351b796624..0ba30b5c6f7 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
@@ -192,8 +192,8 @@ public class FileDownloaderTest {
FileDownloader fileDownloader = new FileDownloader(connectionPool, downloadDir, tempDir, timeout, sleepBetweenRetries);
FileReference foo = new FileReference("foo");
FileReference bar = new FileReference("bar");
- fileDownloader.queueForAsyncDownload(new FileReferenceDownload(foo));
- fileDownloader.queueForAsyncDownload(new FileReferenceDownload(bar));
+ fileDownloader.download(new FileReferenceDownload(foo));
+ fileDownloader.download(new FileReferenceDownload(bar));
// Verify download status
assertDownloadStatus(fileDownloader, foo, 0.0);