From bfad7115165a61fe3d7490066b55f642f11b7bf5 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 6 Jul 2022 19:31:51 +0200 Subject: Make sure to set compression type in file distribution meta request --- .../com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java | 2 +- .../main/java/com/yahoo/vespa/filedistribution/FileReceiver.java | 1 + .../yahoo/vespa/filedistribution/FileReferenceCompressor.java | 4 ++-- .../java/com/yahoo/vespa/filedistribution/FileReferenceData.java | 6 +++++- .../com/yahoo/vespa/filedistribution/LazyFileReferenceData.java | 4 ++-- .../filedistribution/LazyTemporaryStorageFileReferenceData.java | 4 ++-- .../com/yahoo/vespa/filedistribution/FileReferenceDataTest.java | 9 ++++++--- 7 files changed, 19 insertions(+), 11 deletions(-) (limited to 'filedistribution') diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java index 8b3bc32ff71..ea8461b42f3 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java @@ -12,7 +12,7 @@ public class EmptyFileReferenceData extends FileReferenceData { private int contentRead = 0; private EmptyFileReferenceData(FileReference fileReference, String filename, Type type, byte[] content, long xxhash) { - super(fileReference, filename, type); + super(fileReference, filename, type, CompressionType.gzip); this.content = content; this.xxhash = xxhash; } 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 65c6dd5931d..a285fbaafe2 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java @@ -129,6 +129,7 @@ public class FileReceiver { moveFileToDestination(inprogressFile, file); } else { decompressedDir = Files.createTempDirectory(tmpDir.toPath(), "archive").toFile(); + log.log(Level.FINE, () -> "compression type to use=" + compressionType); new FileReferenceCompressor(fileType, compressionType).decompress(inprogressFile, decompressedDir); moveFileToDestination(decompressedDir, fileReferenceDir); } 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 b485e6ded86..efb845bafe7 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceCompressor.java @@ -118,9 +118,9 @@ public class FileReferenceCompressor { } private OutputStream compressedOutputStream(File outputFile) throws IOException { - log.log(Level.FINE, () -> "Compressing with type " + type + " and compression type " + compressionType); switch (type) { case compressed: + log.log(Level.FINE, () -> "Compressing with compression type " + compressionType); switch (compressionType) { case gzip: return new GZIPOutputStream(new FileOutputStream(outputFile)); @@ -137,9 +137,9 @@ public class FileReferenceCompressor { } private InputStream decompressedInputStream(File inputFile) throws IOException { - log.log(Level.FINE, () -> "Decompressing with type " + type + " and compression type " + compressionType); switch (type) { case compressed: + log.log(Level.FINE, () -> "Decompressing with compression type " + compressionType); switch (compressionType) { case gzip: return new GZIPInputStream(new FileInputStream(inputFile)); diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java index d14f690b2d3..3f83cbea506 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java @@ -18,11 +18,13 @@ public abstract class FileReferenceData { private final FileReference fileReference; private final String filename; private final Type type; + private final CompressionType compressionType; - public FileReferenceData(FileReference fileReference, String filename, Type type) { + public FileReferenceData(FileReference fileReference, String filename, Type type, CompressionType compressionType) { this.fileReference = fileReference; this.filename = filename; this.type = type; + this.compressionType = compressionType; } public FileReference fileReference() {return fileReference;} @@ -31,6 +33,8 @@ public abstract class FileReferenceData { public Type type() {return type;} + public CompressionType compressionType() { return compressionType;} + public ByteBuffer content() { ByteBuffer bb = ByteBuffer.allocate((int)size()); while (bb.remaining() > 0) { diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java index 10de9c072b9..c8fbb639b35 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java @@ -17,8 +17,8 @@ public class LazyFileReferenceData extends FileReferenceData { private final ReadableByteChannel channel; private final StreamingXXHash64 hasher; - public LazyFileReferenceData(FileReference fileReference, String filename, Type type, File file) throws IOException { - super(fileReference, filename, type); + public LazyFileReferenceData(FileReference fileReference, String filename, Type type, File file, CompressionType compressionType) throws IOException { + super(fileReference, filename, type, compressionType); this.file = file; channel = Files.newByteChannel(file.toPath()); this.hasher = XXHashFactory.fastestInstance().newStreamingHash64(0); diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java index 974d5ff1489..a69370b28ff 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java @@ -12,8 +12,8 @@ import java.nio.file.Files; */ public class LazyTemporaryStorageFileReferenceData extends LazyFileReferenceData { - public LazyTemporaryStorageFileReferenceData(FileReference fileReference, String filename, Type type, File file) throws IOException { - super(fileReference, filename, type, file); + public LazyTemporaryStorageFileReferenceData(FileReference fileReference, String filename, Type type, File file, CompressionType compressionType) throws IOException { + super(fileReference, filename, type, file, compressionType); } public void close() { diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java index 66b731f204b..eda93331c73 100644 --- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java +++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java @@ -7,12 +7,15 @@ import com.yahoo.text.Utf8; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; - import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; +import static com.yahoo.vespa.filedistribution.FileReferenceData.CompressionType; +import static com.yahoo.vespa.filedistribution.FileReferenceData.CompressionType.gzip; +import static com.yahoo.vespa.filedistribution.FileReferenceData.Type; +import static com.yahoo.vespa.filedistribution.FileReferenceData.Type.compressed; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -27,7 +30,7 @@ public class FileReferenceDataTest { String content = "blob"; File tempFile = writeTempFile(content); FileReferenceData fileReferenceData = - new LazyTemporaryStorageFileReferenceData(new FileReference("ref"), "foo", FileReferenceData.Type.compressed, tempFile); + new LazyTemporaryStorageFileReferenceData(new FileReference("ref"), "foo", compressed, tempFile, gzip); ByteBuffer byteBuffer = ByteBuffer.allocate(100); assertEquals(4, fileReferenceData.nextContent(byteBuffer)); assertEquals(content, Utf8.toString(Arrays.copyOfRange(byteBuffer.array(), 0, 4))); @@ -44,7 +47,7 @@ public class FileReferenceDataTest { String content = "blobbblubbblabb"; File file = writeTempFile(content); FileReferenceData fileReferenceData = - new LazyFileReferenceData(new FileReference("ref"), "foo", FileReferenceData.Type.compressed, file); + new LazyFileReferenceData(new FileReference("ref"), "foo", Type.compressed, file, CompressionType.gzip); ByteBuffer byteBuffer = ByteBuffer.allocate(10); assertEquals(10, fileReferenceData.nextContent(byteBuffer)); assertEquals(content.substring(0,10), Utf8.toString(Arrays.copyOfRange(byteBuffer.array(), 0, 10))); -- cgit v1.2.3