This is an automated email from the ASF dual-hosted git repository. yong pushed a commit to branch branch-4.15 in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
commit fcff85bebf0290b4d3ae79798f9ea52e994dbf18 Author: Yan Zhao <[email protected]> AuthorDate: Wed Feb 8 14:53:11 2023 +0800 Fix memory leak when the Bookie is in read-only mode. (#3746) Descriptions of the changes in this PR: Fixes #3745 (cherry picked from commit af82d14cb1da6a97b563b80e80b5d2fe462e2c4f) --- .../main/java/org/apache/bookkeeper/proto/BookieProtoEncoding.java | 2 +- .../main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtoEncoding.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtoEncoding.java index 860fb6635f..88ee09d61f 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtoEncoding.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtoEncoding.java @@ -180,7 +180,7 @@ public class BookieProtoEncoding { packet.markReaderIndex(); return BookieProtocol.ParsedAddRequest.create( version, ledgerId, entryId, flags, - masterKey, packet.retain()); + masterKey, packet); } case BookieProtocol.READENTRY: diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java index 0fb2d3f8f0..5bee27b0fb 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java @@ -176,7 +176,9 @@ abstract class PacketProcessorBase<T extends Request> extends SafeRunnable { if (request instanceof BookieProtocol.ReadRequest) { requestProcessor.onReadRequestFinish(); } - if (request instanceof BookieProtocol.AddRequest) { + if (request instanceof BookieProtocol.ParsedAddRequest) { + ((BookieProtocol.ParsedAddRequest) request).release(); + request.recycle(); requestProcessor.onAddRequestFinish(); } return;
