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/10 05:06:25 UTC

[bookkeeper] branch master updated: Issue #1241: Fixed NPE in PerChannelBookieClient

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 f0757e9  Issue #1241: Fixed NPE in PerChannelBookieClient
f0757e9 is described below

commit f0757e9ac643d6f36a11be4065d163437180cb7e
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Fri Mar 9 21:06:18 2018 -0800

    Issue #1241: Fixed NPE in PerChannelBookieClient
    
    The `CompletionValue` object from the map can be null in some cases and we need to protect for it.
    
    Fixes #1241
    
    Author: Matteo Merli <mm...@apache.org>
    
    Reviewers: Sijie Guo <si...@apache.org>
    
    This closes #1242 from merlimat/fix-npe, closes #1241
---
 .../bookkeeper/proto/PerChannelBookieClient.java    | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

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 5adc7cf..440239f 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
@@ -876,17 +876,18 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
         try {
             final long startTime = MathUtils.nowInNano();
             ChannelFuture future = channel.writeAndFlush(request);
-            future.addListener(new ChannelFutureListener() {
-                @Override
-                public void operationComplete(ChannelFuture future) throws Exception {
-                    if (future.isSuccess()) {
-                        nettyOpLogger.registerSuccessfulEvent(MathUtils.elapsedNanos(startTime),
-                                TimeUnit.NANOSECONDS);
-                        completionObjects.get(key).setOutstanding();
-                    } else {
-                        nettyOpLogger.registerFailedEvent(MathUtils.elapsedNanos(startTime),
-                                TimeUnit.NANOSECONDS);
+            future.addListener(future1 -> {
+                if (future1.isSuccess()) {
+                    nettyOpLogger.registerSuccessfulEvent(MathUtils.elapsedNanos(startTime),
+                            TimeUnit.NANOSECONDS);
+                    CompletionValue completion = completionObjects.get(key);
+                    if (completion != null) {
+                        completion.setOutstanding();
                     }
+
+                } else {
+                    nettyOpLogger.registerFailedEvent(MathUtils.elapsedNanos(startTime),
+                            TimeUnit.NANOSECONDS);
                 }
             });
         } catch (Throwable e) {

-- 
To stop receiving notification emails like this one, please contact
mmerli@apache.org.