diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/MetaStoreImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/MetaStoreImpl.java index b21b41ec92c21..dd2ebfa11cfcc 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/MetaStoreImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/MetaStoreImpl.java @@ -310,7 +310,6 @@ public byte[] compressLedgerInfo(ManagedLedgerInfo managedLedgerInfo) { return managedLedgerInfo.toByteArray(); } ByteBuf metadataByteBuf = null; - ByteBuf uncompressedByteBuf = null; ByteBuf encodeByteBuf = null; try { MLDataFormats.ManagedLedgerInfoMetadata mlInfoMetadata = MLDataFormats.ManagedLedgerInfoMetadata @@ -323,13 +322,9 @@ public byte[] compressLedgerInfo(ManagedLedgerInfo managedLedgerInfo) { metadataByteBuf.writeShort(MAGIC_MANAGED_LEDGER_INFO_METADATA); metadataByteBuf.writeInt(mlInfoMetadata.getSerializedSize()); metadataByteBuf.writeBytes(mlInfoMetadata.toByteArray()); - byte[] byteArray = managedLedgerInfo.toByteArray(); - // The reason for copy the data to a direct buffer here is to ensure the metadata compression feature can - // work on JDK1.8, for more details to see: https://github.com/apache/pulsar/issues/11593 - uncompressedByteBuf = Unpooled.directBuffer(byteArray.length); - uncompressedByteBuf.writeBytes(byteArray); + encodeByteBuf = getCompressionCodec(compressionType) - .encode(uncompressedByteBuf); + .encode(Unpooled.wrappedBuffer(managedLedgerInfo.toByteArray())); CompositeByteBuf compositeByteBuf = PulsarByteBufAllocator.DEFAULT.compositeBuffer(); compositeByteBuf.addComponent(true, metadataByteBuf); compositeByteBuf.addComponent(true, encodeByteBuf); @@ -340,9 +335,6 @@ public byte[] compressLedgerInfo(ManagedLedgerInfo managedLedgerInfo) { if (metadataByteBuf != null) { metadataByteBuf.release(); } - if (uncompressedByteBuf != null) { - uncompressedByteBuf.release(); - } if (encodeByteBuf != null) { encodeByteBuf.release(); } @@ -353,7 +345,6 @@ public ManagedLedgerInfo parseManagedLedgerInfo(byte[] data) throws InvalidProto ByteBuf byteBuf = Unpooled.wrappedBuffer(data); if (byteBuf.readableBytes() > 0 && byteBuf.readShort() == MAGIC_MANAGED_LEDGER_INFO_METADATA) { ByteBuf decodeByteBuf = null; - ByteBuf compressedByteBuf = null; try { int metadataSize = byteBuf.readInt(); byte[] metadataBytes = new byte[metadataSize]; @@ -362,12 +353,8 @@ public ManagedLedgerInfo parseManagedLedgerInfo(byte[] data) throws InvalidProto MLDataFormats.ManagedLedgerInfoMetadata.parseFrom(metadataBytes); long unpressedSize = metadata.getUncompressedSize(); - // The reason for copy the data to a direct buffer here is to ensure the metadata compression feature - // can work on JDK1.8, for more details to see: https://github.com/apache/pulsar/issues/11593 - compressedByteBuf = Unpooled.directBuffer(byteBuf.readableBytes()); - compressedByteBuf.writeBytes(byteBuf); decodeByteBuf = getCompressionCodec(metadata.getCompressionType()) - .decode(compressedByteBuf, (int) unpressedSize); + .decode(byteBuf, (int) unpressedSize); byte[] decodeBytes; // couldn't decode data by ZLIB compression byteBuf array() directly if (decodeByteBuf.hasArray() && !CompressionType.ZLIB.equals(metadata.getCompressionType())) { @@ -385,9 +372,6 @@ public ManagedLedgerInfo parseManagedLedgerInfo(byte[] data) throws InvalidProto if (decodeByteBuf != null) { decodeByteBuf.release(); } - if (compressedByteBuf != null) { - compressedByteBuf.release(); - } byteBuf.release(); } } else {