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/30 05:59:48 UTC

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

Author: sijie
Date: Wed Oct 30 04:59:47 2013
New Revision: 1536965

URL: http://svn.apache.org/r1536965
Log:
BOOKKEEPER-698: Bookie client closure is not considering timeoutExecutor (rakesh via sijie)

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

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1536965&r1=1536964&r2=1536965&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Wed Oct 30 04:59:47 2013
@@ -186,6 +186,8 @@ Trunk (unreleased changes)
 
       BOOKKEEPER-602: we should have request timeouts rather than channel timeout in PerChannelBookieClient (Aniruddha, ivank via sijie)
 
+      BOOKKEEPER-698: Bookie client closure is not considering timeoutExecutor (rakesh via sijie)
+
     NEW FEATURE:
 
       BOOKKEEPER-562: Ability to tell if a ledger is closed or not (fpj)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClient.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClient.java?rev=1536965&r1=1536964&r2=1536965&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClient.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClient.java Wed Oct 30 04:59:47 2013
@@ -30,6 +30,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
@@ -47,12 +48,8 @@ import org.jboss.netty.channel.socket.ni
 
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import static com.google.common.base.Charsets.UTF_8;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 /**
  * Implements the client-side part of the BookKeeper protocol.
  *
@@ -67,7 +64,9 @@ public class BookieClient {
     final ClientSocketChannelFactory channelFactory;
     final ConcurrentHashMap<InetSocketAddress, PerChannelBookieClient> channels =
         new ConcurrentHashMap<InetSocketAddress, PerChannelBookieClient>();
-    final ScheduledExecutorService timeoutExecutor = Executors.newSingleThreadScheduledExecutor();
+    final ScheduledExecutorService timeoutExecutor = Executors
+            .newSingleThreadScheduledExecutor(new ThreadFactoryBuilder()
+                    .setNameFormat("BKClient-TimeoutTaskExecutor-%d").build());
     private final ClientConfiguration conf;
     private volatile boolean closed;
     private final ReentrantReadWriteLock closeLock;
@@ -218,6 +217,16 @@ public class BookieClient {
         } finally {
             closeLock.writeLock().unlock();
         }
+        timeoutExecutor.shutdown();
+        try {
+            if (!timeoutExecutor.awaitTermination(5, TimeUnit.SECONDS)) {
+                LOG.warn("BKClient-TimeoutTaskExecutor did not shutdown cleanly!");
+            }
+        } catch (InterruptedException ie) {
+            LOG.warn(
+                    "Interrupted when shutting down BKClient-TimeoutTaskExecutor",
+                    ie);
+        }
     }
 
     private static class Counter {