diff --git a/server/src/main/java/org/elasticsearch/common/compress/DeflateCompressor.java b/server/src/main/java/org/elasticsearch/common/compress/DeflateCompressor.java index f3e229b349613..411198e930742 100644 --- a/server/src/main/java/org/elasticsearch/common/compress/DeflateCompressor.java +++ b/server/src/main/java/org/elasticsearch/common/compress/DeflateCompressor.java @@ -229,9 +229,10 @@ public void close() throws IOException { public BytesReference uncompress(BytesReference bytesReference) throws IOException { final BytesStreamOutput buffer = baos.get(); final Inflater inflater = inflaterRef.get(); - inflater.reset(); try (InflaterOutputStream ios = new InflaterOutputStream(buffer, inflater)) { bytesReference.slice(HEADER.length, bytesReference.length() - HEADER.length).writeTo(ios); + } finally { + inflater.reset(); } final BytesReference res = buffer.copyBytes(); buffer.reset(); @@ -245,11 +246,12 @@ public BytesReference uncompress(BytesReference bytesReference) throws IOExcepti @Override public BytesReference compress(BytesReference bytesReference) throws IOException { final BytesStreamOutput buffer = baos.get(); - final Deflater deflater = deflaterRef.get(); - deflater.reset(); buffer.write(HEADER); + final Deflater deflater = deflaterRef.get(); try (DeflaterOutputStream dos = new DeflaterOutputStream(buffer, deflater, true)) { bytesReference.writeTo(dos); + } finally { + deflater.reset(); } final BytesReference res = buffer.copyBytes(); buffer.reset();