You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by si...@apache.org on 2013/10/22 07:35:47 UTC

svn commit: r1534498 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java

Author: sijie
Date: Tue Oct 22 05:35:46 2013
New Revision: 1534498

URL: http://svn.apache.org/r1534498
Log:
BOOKKEEPER-688: NPE exception in PerChannelBookieClient (ivank via sijie)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1534498&r1=1534497&r2=1534498&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Tue Oct 22 05:35:46 2013
@@ -112,6 +112,8 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-673: Ledger length can be inaccurate in failure case (sijie via ivank)
 
+        BOOKKEEPER-688: NPE exception in PerChannelBookieClient (ivank via sijie)
+
       hedwig-server:
 
         BOOKKEEPER-601: readahead cache size isn't updated correctly (sijie via fpj)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java?rev=1534498&r1=1534497&r2=1534498&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java Tue Oct 22 05:35:46 2013
@@ -238,15 +238,20 @@ public class PerChannelBookieClient exte
         final int entrySize = toSend.readableBytes();
         final CompletionKey completionKey = new CompletionKey(ledgerId, entryId);
         addCompletions.put(completionKey, new AddCompletion(cb, entrySize, ctx));
+        final Channel c = channel;
+        if (c == null) {
+            errorOutAddKey(completionKey);
+            return;
+        }
         try {
-            ChannelFuture future = channel.write(r);
+            ChannelFuture future = c.write(r);
             future.addListener(new ChannelFutureListener() {
                 @Override
                 public void operationComplete(ChannelFuture future) throws Exception {
                     if (future.isSuccess()) {
                         if (LOG.isDebugEnabled()) {
                             LOG.debug("Successfully wrote request for adding entry: " + entryId + " ledger-id: " + ledgerId
-                                                            + " bookie: " + channel.getRemoteAddress() + " entry length: " + entrySize);
+                                                            + " bookie: " + c.getRemoteAddress() + " entry length: " + entrySize);
                         }
                         // totalBytesOutstanding.addAndGet(entrySize);
                     } else {
@@ -270,15 +275,21 @@ public class PerChannelBookieClient exte
                 BookieProtocol.CURRENT_PROTOCOL_VERSION, ledgerId, entryId,
                 BookieProtocol.FLAG_DO_FENCING, masterKey);
 
+        final Channel c = channel;
+        if (c == null) {
+            errorOutReadKey(key);
+            return;
+        }
+
         try {
-            ChannelFuture future = channel.write(r);
+            ChannelFuture future = c.write(r);
             future.addListener(new ChannelFutureListener() {
                     @Override
                     public void operationComplete(ChannelFuture future) throws Exception {
                         if (future.isSuccess()) {
                             if (LOG.isDebugEnabled()) {
                                 LOG.debug("Successfully wrote request {} to {}",
-                                          r, channel.getRemoteAddress());
+                                          r, c.getRemoteAddress());
                             }
                         } else {
                             errorOutReadKey(key);
@@ -299,15 +310,21 @@ public class PerChannelBookieClient exte
                 BookieProtocol.CURRENT_PROTOCOL_VERSION, ledgerId, entryId,
                 BookieProtocol.FLAG_NONE);
 
+        final Channel c = channel;
+        if (c == null) {
+            errorOutReadKey(key);
+            return;
+        }
+
         try{
-            ChannelFuture future = channel.write(r);
+            ChannelFuture future = c.write(r);
             future.addListener(new ChannelFutureListener() {
                 @Override
                 public void operationComplete(ChannelFuture future) throws Exception {
                     if (future.isSuccess()) {
                         if (LOG.isDebugEnabled()) {
                             LOG.debug("Successfully wrote request {} to {}",
-                                      r, channel.getRemoteAddress());
+                                      r, c.getRemoteAddress());
                         }
                     } else {
                         errorOutReadKey(key);