From f0d10793ab0e280bc90781a6875a3a51f9d7c250 Mon Sep 17 00:00:00 2001 From: Mohit Godwani Date: Thu, 17 Aug 2023 00:12:23 +0530 Subject: [PATCH] Close Dictionary after every execution to avoid any memory leak --- .../index/codec/customcodecs/ZstdCompressionMode.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java b/server/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java index 7057dac3d6bd2..752e7fbe0dd2f 100644 --- a/server/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java +++ b/server/src/main/java/org/opensearch/index/codec/customcodecs/ZstdCompressionMode.java @@ -102,11 +102,13 @@ private void compress(byte[] bytes, int offset, int length, DataOutput out) thro // dictionary compression first doCompress(bytes, offset, dictLength, cctx, out); - cctx.loadDict(new ZstdDictCompress(bytes, offset, dictLength, compressionLevel)); + try (ZstdDictCompress dictCompress = new ZstdDictCompress(bytes, offset, dictLength, compressionLevel)) { + cctx.loadDict(dictCompress); - for (int start = offset + dictLength; start < end; start += blockLength) { - int l = Math.min(blockLength, end - start); - doCompress(bytes, start, l, cctx, out); + for (int start = offset + dictLength; start < end; start += blockLength) { + int l = Math.min(blockLength, end - start); + doCompress(bytes, start, l, cctx, out); + } } } }