[tor-commits] [metrics-lib/release] Resume previously aborted downloads.
karsten at torproject.org
karsten at torproject.org
Wed Sep 26 15:13:24 UTC 2018
commit a67a4713f64dca654928d10d6f5ff469540a47cf
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Wed Jul 4 20:54:14 2018 +0200
Resume previously aborted downloads.
So far, whenever DescriptorCollector fetches a remote file, it writes
its contents to a local temporary file and later renames that file.
The idea is to avoid incomplete downloads. However, if a local
temporary file already exists from an earlier run, DescriptorCollector
fails and skips the remote file. This is not intended.
With this change, DescriptorCollector always overwrites a local
temporary file when it finds one. It still doesn't delete incomplete
temporary files that are not re-attempted later. But not skipping them
is already a good start.
Fixes #24153.
---
CHANGELOG.md | 3 +++
.../org/torproject/descriptor/index/DescriptorIndexCollector.java | 4 +++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e9ad5f..d6f79ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,9 @@
after upgrading from Java 8 to 9. Applications must provide
Apache Commons Codec 1.10 as dependency.
+ * Minor changes
+ - Make DescriptorCollector resume previously aborted downloads.
+
# Changes in version 2.4.0 - 2018-05-23
diff --git a/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java b/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java
index be79386..873eb81 100644
--- a/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java
+++ b/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java
@@ -16,6 +16,7 @@ import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
+import java.nio.file.StandardCopyOption;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Map;
import java.util.SortedMap;
@@ -120,7 +121,8 @@ public class DescriptorIndexCollector implements DescriptorCollector {
destinationFile.getAbsolutePath());
try (InputStream is = new URL(baseUrl + "/" + filepathname)
.openStream()) {
- Files.copy(is, tempDestinationFile.toPath());
+ Files.copy(is, tempDestinationFile.toPath(),
+ StandardCopyOption.REPLACE_EXISTING);
if (tempDestinationFile.length() == entry.getValue().size) {
tempDestinationFile.renameTo(destinationFile);
destinationFile.setLastModified(lastModifiedMillis);
More information about the tor-commits
mailing list