From dd6e60a675eea7a06e1b0eb4315d14eeeadb891f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 15 Dec 2020 04:19:14 +0100 Subject: [PATCH] Compress blob storage entries. --- .../li/cil/oc2/common/serialization/BlobStorage.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java b/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java index 841190e9..89d52d33 100644 --- a/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java +++ b/src/main/java/li/cil/oc2/common/serialization/BlobStorage.java @@ -21,6 +21,8 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; /** * This class facilitates storing binary chunks of data in an efficient, parallelized fashion. @@ -234,7 +236,9 @@ public final class BlobStorage { try { final Path path = dataDirectory.resolve(handle.toString()); try (final OutputStream output = Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) { - copyData(input, output); + final GZIPOutputStream zipped = new GZIPOutputStream(output); + copyData(input, zipped); + zipped.finish(); } } catch (final Throwable e) { LOGGER.error(e); @@ -253,8 +257,9 @@ public final class BlobStorage { if (!Files.exists(path)) { return; } - try (final InputStream input = Files.newInputStream(path, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) { - copyData(input, output); + try (final InputStream input = Files.newInputStream(path, StandardOpenOption.READ)) { + final GZIPInputStream zipped = new GZIPInputStream(input); + copyData(zipped, output); } } catch (final Throwable e) { LOGGER.error(e);