diff options
author | Harald Musum <musum@yahooinc.com> | 2023-01-12 13:09:28 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-01-12 13:09:28 +0100 |
commit | 8262835be0dee586fbe1862f62f02fd69e7b2f27 (patch) | |
tree | 88e13b78c1db6a0059c64e7c6ffcf2d0c3618d07 /filedistribution/src/main/java/com/yahoo/vespa | |
parent | 9667e51302674c198421a010e66efb8de8990f35 (diff) |
Support zstd as compression type for file references
Diffstat (limited to 'filedistribution/src/main/java/com/yahoo/vespa')
-rw-r--r-- | filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java index 2ea41a9fd8c..7b45c12bf61 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java @@ -1,6 +1,8 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.filedistribution; +import ai.vespa.airlift.zstd.ZstdInputStream; +import com.yahoo.compress.ZstdOutputStream; import net.jpountz.lz4.LZ4BlockInputStream; import net.jpountz.lz4.LZ4BlockOutputStream; import org.apache.commons.compress.archivers.ArchiveEntry; @@ -21,7 +23,6 @@ import java.util.List; import java.util.Objects; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.stream.Collectors; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; @@ -118,32 +119,34 @@ public class FileReferenceCompressor { } private OutputStream compressedOutputStream(File outputFile) throws IOException { + FileOutputStream out = new FileOutputStream(outputFile); switch (type) { case compressed: log.log(Level.FINE, () -> "Compressing with compression type " + compressionType); return switch (compressionType) { - case gzip -> new GZIPOutputStream(new FileOutputStream(outputFile)); - case lz4 -> new LZ4BlockOutputStream(new FileOutputStream(outputFile)); - default -> throw new RuntimeException("Unknown compression type " + compressionType); + case gzip -> new GZIPOutputStream(out); + case lz4 -> new LZ4BlockOutputStream(out); + case zstd -> new ZstdOutputStream(out); }; case file: - return new FileOutputStream(outputFile); + return out; default: throw new RuntimeException("Unknown file reference type " + type); } } private InputStream decompressedInputStream(File inputFile) throws IOException { + FileInputStream in = new FileInputStream(inputFile); switch (type) { case compressed: log.log(Level.FINE, () -> "Decompressing with compression type " + compressionType); return switch (compressionType) { - case gzip -> new GZIPInputStream(new FileInputStream(inputFile)); - case lz4 -> new LZ4BlockInputStream(new FileInputStream(inputFile)); - default -> throw new RuntimeException("Unknown compression type " + compressionType); + case gzip -> new GZIPInputStream(in); + case lz4 -> new LZ4BlockInputStream(in); + case zstd -> new ZstdInputStream(in); }; case file: - return new FileInputStream(inputFile); + return in; default: throw new RuntimeException("Unknown file reference type " + type); } |