diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-22 17:07:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-22 17:07:53 +0200 |
commit | 4e028fcd9b61381d19209808e7834ea3b1a7d6ac (patch) | |
tree | d8b083406c8a483a761ebabe0f304e752115a220 /filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java | |
parent | b9472b1b3525f3c0b200ab039c6e4373a513ee2b (diff) | |
parent | ff98082a143dc4b158d646f734518df51d061823 (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.java | 21 |
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); |