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 314170d4c67135a90913b97fb0efecd41d3e56b9 Author: lifepuzzlefun <[email protected]> AuthorDate: Tue Aug 29 14:52:16 2023 +0800 fix read write request leak when executor full. (#4024) Co-authored-by: wangjinlong <[email protected]> (cherry picked from commit 0b0fe0bb42b535c9b447b6ed95b961899832f76b) --- .../main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java | 4 ++++ .../src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java index cb72b70681..13c15db6ac 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java @@ -647,6 +647,9 @@ public class BookieRequestProcessor implements RequestProcessor { BookieProtocol.ETOOMANYREQUESTS, ResponseBuilder.buildErrorResponse(BookieProtocol.ETOOMANYREQUESTS, r), requestStats.getAddRequestStats()); + r.release(); + r.recycle(); + write.recycle(); } } } @@ -682,6 +685,7 @@ public class BookieRequestProcessor implements RequestProcessor { ResponseBuilder.buildErrorResponse(BookieProtocol.ETOOMANYREQUESTS, r), requestStats.getReadRequestStats()); onReadRequestFinish(); + read.recycle(); } } } diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java index c1127436ac..2b15b398f7 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java @@ -189,7 +189,7 @@ class ReadEntryProcessor extends PacketProcessorBase<ReadRequest> { return String.format("ReadEntry(%d, %d)", request.getLedgerId(), request.getEntryId()); } - private void recycle() { + void recycle() { request.recycle(); super.reset(); this.recyclerHandle.recycle(this);
