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 <mme...@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 <mme...@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
mme...@apache.org.

Reply via email to