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;

Reply via email to