From 98e925d48b4e685ad88604d0a574b00f232ec3a9 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 22 Jun 2021 11:07:44 +0200 Subject: Use synchronized map, simplify --- .../main/java/com/yahoo/vespa/filedistribution/Downloads.java | 11 +++++------ .../com/yahoo/vespa/filedistribution/FileDownloaderTest.java | 5 ++++- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'filedistribution') diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java index 181c424ef98..ba5693a1efb 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java @@ -7,6 +7,7 @@ import java.io.File; import java.time.Instant; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; @@ -79,16 +80,14 @@ public class Downloads { private static final int maxEntries = 100; - private final Map downloadStatus = new ConcurrentHashMap<>(); + private final Map downloadStatus = Collections.synchronizedMap(new HashMap<>()); void add(FileReference fileReference) { add(fileReference, 0.0); } void add(FileReference fileReference, double progress) { - DownloadStatus ds = new DownloadStatus(fileReference); - ds.setProgress(progress); - downloadStatus.put(fileReference, ds); + downloadStatus.put(fileReference, new DownloadStatus(fileReference, progress)); if (downloadStatus.size() > maxEntries) { Map.Entry oldest = Collections.min(downloadStatus.entrySet(), Comparator.comparing(e -> e.getValue().created)); @@ -116,9 +115,9 @@ public class Downloads { private double progress; // between 0 and 1 private final Instant created; - DownloadStatus(FileReference fileReference) { + DownloadStatus(FileReference fileReference, double progress) { this.fileReference = fileReference; - this.progress = 0.0; + this.progress = progress; this.created = Instant.now(); } 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 475228543eb..6169f6fbe55 100644 --- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java +++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java @@ -273,7 +273,10 @@ public class FileDownloaderTest { private void assertDownloadStatus(FileReference fileReference, double expectedDownloadStatus) { double downloadStatus = downloads.downloadStatus(fileReference); - assertEquals(expectedDownloadStatus, downloadStatus, 0.0001); + assertEquals("Download statuses: " + downloads.downloadStatuses().toString(), + expectedDownloadStatus, + downloadStatus, + 0.0001); } private void receiveFile(FileReference fileReference, String filename, FileReferenceData.Type type, String content) { -- cgit v1.2.3