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 <[email protected]>
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 <[email protected]>
Reviewers: Sijie Guo <[email protected]>
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
[email protected].