You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by yo...@apache.org on 2023/02/16 11:16:26 UTC

[bookkeeper] 32/33: Fix memory leak when the Bookie is in read-only mode. (#3746)

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 <ho...@apache.org>
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;