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(); }