aboutsummaryrefslogtreecommitdiffstats
path: root/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-05-22 17:07:53 +0200
committerGitHub <noreply@github.com>2022-05-22 17:07:53 +0200
commit4e028fcd9b61381d19209808e7834ea3b1a7d6ac (patch)
treed8b083406c8a483a761ebabe0f304e752115a220 /filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
parentb9472b1b3525f3c0b200ab039c6e4373a513ee2b (diff)
parentff98082a143dc4b158d646f734518df51d061823 (diff)
Merge pull request #22699 from vespa-engine/hmusum/cleanup-4v7.588.57
Make sure to delete directory for decompressed files if something fails
Diffstat (limited to 'filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java')
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java21
1 files changed, 10 insertions, 11 deletions
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
index a2c5fee1e51..748d9eb1003 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
@@ -1,5 +1,4 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
@@ -106,14 +105,15 @@ public class FileReceiver {
}
File close(long hash) {
- if (hasher.getValue() != hash) {
+ if (hasher.getValue() != hash)
throw new RuntimeException("xxhash from content (" + currentHash + ") is not equal to xxhash in request (" + hash + ")");
- }
+
File file = new File(fileReferenceDir, fileName);
+ File decompressedDir = null;
try {
// Unpack if necessary
if (fileType == FileReferenceData.Type.compressed) {
- File decompressedDir = Files.createTempDirectory(tmpDir.toPath(), "archive").toFile();
+ decompressedDir = Files.createTempDirectory(tmpDir.toPath(), "archive").toFile();
CompressedFileReference.decompress(inprogressFile, decompressedDir);
moveFileToDestination(decompressedDir, fileReferenceDir);
} else {
@@ -130,11 +130,8 @@ public class FileReceiver {
log.log(Level.SEVERE, "Failed writing file: " + e.getMessage(), e);
throw new RuntimeException("Failed writing file: ", e);
} finally {
- try {
- Files.deleteIfExists(inprogressFile.toPath());
- } catch (IOException e) {
- log.log(Level.SEVERE, "Failed deleting " + inprogressFile.getAbsolutePath() + ": " + e.getMessage(), e);
- }
+ deletePath(inprogressFile);
+ deletePath(decompressedDir);
}
return file;
}
@@ -196,12 +193,14 @@ public class FileReceiver {
log.log(Level.SEVERE, message, e);
throw new RuntimeException(message, e);
} finally {
- deleteFileOrDirectory(tempFile);
+ deletePath(tempFile);
}
}
- private static void deleteFileOrDirectory(File path) {
+ private static void deletePath(File path) {
+ if (path == null) return;
if ( ! path.exists()) return;
+
try {
if (path.isDirectory())
IOUtils.recursiveDeleteDir(path);