This is an automated email from the ASF dual-hosted git repository.
chenhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new af82d14cb1 Fix memory leak when the Bookie is in read-only mode.
(#3746)
af82d14cb1 is described below
commit af82d14cb1da6a97b563b80e80b5d2fe462e2c4f
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
---
.../main/java/org/apache/bookkeeper/proto/BookieProtoEncoding.java | 2 +-
.../main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java | 4 +++-
.../main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java | 3 ---
3 files changed, 4 insertions(+), 5 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 49b1ff5ba9..3e41a3f5ea 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
@@ -183,7 +183,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 633a8ef833..98253ed397 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
@@ -175,7 +175,9 @@ abstract class PacketProcessorBase<T extends Request>
implements Runnable {
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;
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
index 3877dccf10..531dfecccc 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
@@ -21,7 +21,6 @@ import com.google.common.annotations.VisibleForTesting;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.netty.util.Recycler;
-import io.netty.util.ReferenceCountUtil;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.apache.bookkeeper.bookie.BookieException;
@@ -101,8 +100,6 @@ class WriteEntryProcessor extends
PacketProcessorBase<ParsedAddRequest> implemen
request.ledgerId, request.entryId, t.getMessage(), t);
// some bad request which cause unexpected exception
rc = BookieProtocol.EBADREQ;
- } finally {
- ReferenceCountUtil.safeRelease(addData);
}
if (rc != BookieProtocol.EOK) {