From 46cbe4fb04b14ef88f8ca38cf5fbe23ea73fbd5c Mon Sep 17 00:00:00 2001 From: Keyong Zhou Date: Fri, 12 Aug 2022 00:49:42 +0800 Subject: [PATCH] [ISSUE-288] fix netty memory leak(#310) --- .../emr/rss/common/network/protocol/ChunkFetchSuccess.java | 3 +-- .../emr/rss/common/network/util/TransportFrameDecoder.java | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/aliyun/emr/rss/common/network/protocol/ChunkFetchSuccess.java b/common/src/main/java/com/aliyun/emr/rss/common/network/protocol/ChunkFetchSuccess.java index d580d2844..8dbca2ba9 100644 --- a/common/src/main/java/com/aliyun/emr/rss/common/network/protocol/ChunkFetchSuccess.java +++ b/common/src/main/java/com/aliyun/emr/rss/common/network/protocol/ChunkFetchSuccess.java @@ -64,8 +64,7 @@ public final class ChunkFetchSuccess extends ResponseMessage { public static ChunkFetchSuccess decode(ByteBuf buf, boolean decodeBody) { StreamChunkSlice streamChunkSlice = StreamChunkSlice.decode(buf); if (decodeBody) { - buf.retain(); - NettyManagedBuffer managedBuf = new NettyManagedBuffer(buf.duplicate()); + NettyManagedBuffer managedBuf = new NettyManagedBuffer(buf); return new ChunkFetchSuccess(streamChunkSlice, managedBuf); } else { return new ChunkFetchSuccess(streamChunkSlice, NettyManagedBuffer.EmptyBuffer); diff --git a/common/src/main/java/com/aliyun/emr/rss/common/network/util/TransportFrameDecoder.java b/common/src/main/java/com/aliyun/emr/rss/common/network/util/TransportFrameDecoder.java index ed7d86e00..747a5c81a 100644 --- a/common/src/main/java/com/aliyun/emr/rss/common/network/util/TransportFrameDecoder.java +++ b/common/src/main/java/com/aliyun/emr/rss/common/network/util/TransportFrameDecoder.java @@ -69,6 +69,9 @@ public class TransportFrameDecoder extends ChannelInboundHandlerAdapter implemen break; } Message msg = Message.decode(curType, frame); + if (msg.body() == null) { + frame.release(); + } ctx.fireChannelRead(msg); clear(); }