You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by mm...@apache.org on 2018/03/16 16:39:59 UTC
[bookkeeper] branch master updated: Fixed buffer release in v2
BookieProtocol
This is an automated email from the ASF dual-hosted git repository.
mmerli 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 01fc858 Fixed buffer release in v2 BookieProtocol
01fc858 is described below
commit 01fc8580204d726b62ecb4aac99eeda4f3662acb
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Fri Mar 16 09:39:51 2018 -0700
Fixed buffer release in v2 BookieProtocol
There was a buffers leak when using V2 bookie protocol. This was introduced with the refactoring and the merges from yahoo branch.
Note: this was only happening when selecting v2 protocol in client configuration.
The current code was missing a release in both the add and read entries path. I've been running it for some time and the ref-counting seems correct after the fix.
Author: Matteo Merli <mm...@apache.org>
Reviewers: Sijie Guo <si...@apache.org>
This closes #1266 from merlimat/fix-refcounting
---
.../src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java | 6 ++----
.../java/org/apache/bookkeeper/proto/PerChannelBookieClient.java | 1 +
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java
index 86c93e1..9982cca 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java
@@ -24,6 +24,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.util.Recycler;
import io.netty.util.Recycler.Handle;
+import io.netty.util.ReferenceCountUtil;
import org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage;
import org.apache.bookkeeper.util.ByteBufList;
@@ -275,10 +276,6 @@ public interface BookieProtocol {
return (flags & FLAG_RECOVERY_ADD) == FLAG_RECOVERY_ADD;
}
- void release() {
- data.release();
- }
-
private final Handle<AddRequest> recyclerHandle;
private AddRequest(Handle<AddRequest> recyclerHandle) {
this.recyclerHandle = recyclerHandle;
@@ -295,6 +292,7 @@ public interface BookieProtocol {
ledgerId = -1;
entryId = -1;
masterKey = null;
+ ReferenceCountUtil.safeRelease(data);
data = null;
recyclerHandle.recycle(this);
}
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
index cc97fe1..91f0a69 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
@@ -1138,6 +1138,7 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
@Override
public void safeRun() {
completionValue.handleV2Response(ledgerId, entryId, status, response);
+ response.release();
response.recycle();
recycle();
}
--
To stop receiving notification emails like this one, please contact
mmerli@apache.org.