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/02 06:40:40 UTC

svn commit: r1528305 - in /zookeeper/bookkeeper/trunk: ./ bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/ bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/ book...

Author: sijie
Date: Wed Oct  2 04:40:39 2013
New Revision: 1528305

URL: http://svn.apache.org/r1528305
Log:
BOOKKEEPER-666: Naming threads of ExecutorService (rakesh via sijie)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/HierarchicalLedgerManager.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/InMemoryMetastoreTable.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClient.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedSafeExecutor.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestPerChannelBookieClient.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/LoopbackClient.java
    zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigClientImpl.java
    zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/benchmark/BookieBenchmark.java
    zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/netty/PubSubServer.java
    zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/persistence/ReadAheadCache.java
    zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/proxy/HedwigProxy.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Wed Oct  2 04:40:39 2013
@@ -156,6 +156,8 @@ Trunk (unreleased changes)
 
       BOOKKEEPER-640: Log improvement - add shutdown/exit log message for the bookie services (rakesh via sijie)
 
+      BOOKKEEPER-666: Naming threads of ExecutorService (rakesh via sijie)
+
     NEW FEATURE:
 
       BOOKKEEPER-562: Ability to tell if a ledger is closed or not (fpj)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java Wed Oct  2 04:40:39 2013
@@ -145,7 +145,7 @@ public class BenchBookie {
         ClientSocketChannelFactory channelFactory
             = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors
                                                 .newCachedThreadPool());
-        OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+        OrderedSafeExecutor executor = new OrderedSafeExecutor(1, "BenchBookieClientScheduler");
 
         ClientConfiguration conf = new ClientConfiguration();
         BookieClient bc = new BookieClient(conf, channelFactory, executor);

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeper.java Wed Oct  2 04:40:39 2013
@@ -48,6 +48,8 @@ import org.jboss.netty.channel.socket.ni
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 /**
  * BookKeeper client. We assume there is one single writer to a ledger at any
  * time.
@@ -132,14 +134,19 @@ public class BookKeeper {
         ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(conf.getZkTimeout());
         this.zk = ZkUtils
                 .createConnectedZookeeperClient(conf.getZkServers(), w);
-
-        this.channelFactory = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
-                                                                Executors.newCachedThreadPool());
-        this.scheduler = Executors.newSingleThreadScheduledExecutor();
+        ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();
+        this.channelFactory = new NioClientSocketChannelFactory(
+                Executors.newCachedThreadPool(tfb.setNameFormat(
+                        "BookKeeper-NIOBoss-%d").build()),
+                Executors.newCachedThreadPool(tfb.setNameFormat(
+                        "BookKeeper-NIOWorker-%d").build()));
+        this.scheduler = Executors.newSingleThreadScheduledExecutor(tfb
+                .setNameFormat("BookKeeperClientScheduler-%d").build());
         // initialize the ensemble placement
         this.placementPolicy = initializeEnsemblePlacementPolicy(conf);
 
-        mainWorkerPool = new OrderedSafeExecutor(conf.getNumWorkerThreads());
+        mainWorkerPool = new OrderedSafeExecutor(conf.getNumWorkerThreads(),
+                "BookKeeperClientWorker");
         bookieClient = new BookieClient(conf, channelFactory, mainWorkerPool);
         bookieWatcher = new BookieWatcher(conf, scheduler, placementPolicy, this);
         bookieWatcher.readBookiesBlocking();
@@ -166,9 +173,13 @@ public class BookKeeper {
      * @throws KeeperException
      */
     public BookKeeper(ClientConfiguration conf, ZooKeeper zk)
-        throws IOException, InterruptedException, KeeperException {
-        this(conf, zk, new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
-                Executors.newCachedThreadPool()));
+            throws IOException, InterruptedException, KeeperException {
+
+        this(conf, zk, new NioClientSocketChannelFactory(
+                Executors.newCachedThreadPool(new ThreadFactoryBuilder()
+                        .setNameFormat("BookKeeper-NIOBoss-%d").build()),
+                Executors.newCachedThreadPool(new ThreadFactoryBuilder()
+                        .setNameFormat("BookKeeper-NIOWorker-%d").build())));
         ownChannelFactory = true;
     }
 
@@ -201,11 +212,15 @@ public class BookKeeper {
         this.conf = conf;
         this.zk = zk;
         this.channelFactory = channelFactory;
-        this.scheduler = Executors.newSingleThreadScheduledExecutor();
+        ThreadFactoryBuilder tfb = new ThreadFactoryBuilder().setNameFormat(
+                "BookKeeperClientScheduler-%d");
+        this.scheduler = Executors
+                .newSingleThreadScheduledExecutor(tfb.build());
         // initialize the ensemble placement
         this.placementPolicy = initializeEnsemblePlacementPolicy(conf);
 
-        mainWorkerPool = new OrderedSafeExecutor(conf.getNumWorkerThreads());
+        mainWorkerPool = new OrderedSafeExecutor(conf.getNumWorkerThreads(),
+                "BookKeeperClientWorker");
         bookieClient = new BookieClient(conf, channelFactory, mainWorkerPool);
         bookieWatcher = new BookieWatcher(conf, scheduler, placementPolicy, this);
         bookieWatcher.readBookiesBlocking();

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/HierarchicalLedgerManager.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/HierarchicalLedgerManager.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/HierarchicalLedgerManager.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/HierarchicalLedgerManager.java Wed Oct  2 04:40:39 2013
@@ -45,6 +45,8 @@ import org.apache.zookeeper.ZooKeeper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 /**
  * Hierarchical Ledger Manager which manages ledger meta in zookeeper using 2-level hierarchical znodes.
  *
@@ -87,7 +89,10 @@ class HierarchicalLedgerManager extends 
         super(conf, zk);
 
         this.idGenPath = ledgerRootPath + IDGENERATION_PREFIX;
-        this.scheduler = Executors.newSingleThreadScheduledExecutor();
+        ThreadFactoryBuilder tfb = new ThreadFactoryBuilder().setNameFormat(
+                "HierarchialLedgerManagerScheduler-%d");
+        this.scheduler = Executors
+                .newSingleThreadScheduledExecutor(tfb.build());
         LOG.debug("Using HierarchicalLedgerManager with root path : {}", ledgerRootPath);
     }
 

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java Wed Oct  2 04:40:39 2013
@@ -58,6 +58,8 @@ import org.apache.zookeeper.ZooKeeper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 /**
  * MetaStore Based Ledger Manager Factory
  */
@@ -201,7 +203,10 @@ public class MSLedgerManagerFactory exte
             maxEntriesPerScan = conf.getMetastoreMaxEntriesPerScan();
 
             this.idGenPath = conf.getZkLedgersRootPath() + IDGENERATION_PREFIX;
-            this.scheduler = Executors.newSingleThreadScheduledExecutor();
+            ThreadFactoryBuilder tfb = new ThreadFactoryBuilder()
+                    .setNameFormat("MSLedgerManagerScheduler-%d");
+            this.scheduler = Executors.newSingleThreadScheduledExecutor(tfb
+                    .build());
         }
 
         @Override

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/InMemoryMetastoreTable.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/InMemoryMetastoreTable.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/InMemoryMetastoreTable.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/metastore/InMemoryMetastoreTable.java Wed Oct  2 04:40:39 2013
@@ -27,6 +27,8 @@ import org.apache.bookkeeper.metastore.M
 import org.apache.bookkeeper.versioning.Version;
 import org.apache.bookkeeper.versioning.Versioned;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 public class InMemoryMetastoreTable implements MetastoreScannableTable {
 
     public static class MetadataVersion implements Version {
@@ -96,7 +98,11 @@ public class InMemoryMetastoreTable impl
     public InMemoryMetastoreTable(InMemoryMetaStore metastore, String name) {
         this.map = new TreeMap<String, Versioned<Value>>();
         this.name = name;
-        this.scheduler = Executors.newSingleThreadScheduledExecutor();
+        String thName = "InMemoryMetastore-Table(" + name + ")-Scheduler-%d";
+        ThreadFactoryBuilder tfb = new ThreadFactoryBuilder()
+                .setNameFormat(thName);
+        this.scheduler = Executors
+                .newSingleThreadScheduledExecutor(tfb.build());
     }
 
     @Override

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=1528305&r1=1528304&r2=1528305&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  2 04:40:39 2013
@@ -42,6 +42,9 @@ import org.jboss.netty.buffer.ChannelBuf
 import org.jboss.netty.buffer.ChannelBuffers;
 import org.jboss.netty.channel.socket.ClientSocketChannelFactory;
 import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import static com.google.common.base.Charsets.UTF_8;
@@ -260,9 +263,14 @@ public class BookieClient {
         Counter counter = new Counter();
         byte hello[] = "hello".getBytes(UTF_8);
         long ledger = Long.parseLong(args[2]);
-        ClientSocketChannelFactory channelFactory = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors
-                .newCachedThreadPool());
-        OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+        ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();
+        ClientSocketChannelFactory channelFactory = new NioClientSocketChannelFactory(
+                Executors.newCachedThreadPool(tfb.setNameFormat(
+                        "BookKeeper-NIOBoss-%d").build()),
+                Executors.newCachedThreadPool(tfb.setNameFormat(
+                        "BookKeeper-NIOWorker-%d").build()));
+        OrderedSafeExecutor executor = new OrderedSafeExecutor(1,
+                "BookieClientWorker");
         BookieClient bc = new BookieClient(new ClientConfiguration(), channelFactory, executor);
         InetSocketAddress addr = new InetSocketAddress(args[0], Integer.parseInt(args[1]));
 

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedSafeExecutor.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedSafeExecutor.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedSafeExecutor.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/OrderedSafeExecutor.java Wed Oct  2 04:40:39 2013
@@ -25,6 +25,9 @@ import java.util.concurrent.ScheduledExe
 import java.util.concurrent.TimeUnit;
 
 import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GenericCallback;
+import org.apache.commons.lang.StringUtils;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
 /**
  * This class provides 2 things over the java {@link ScheduledExecutorService}.
@@ -45,14 +48,31 @@ public class OrderedSafeExecutor {
     ExecutorService threads[];
     Random rand = new Random();
 
-    public OrderedSafeExecutor(int numThreads) {
+    /**
+     * Constructs Safe executor
+     * 
+     * @param numThreads
+     *            - number of threads
+     * @param threadName
+     *            - name of the thread
+     */
+    public OrderedSafeExecutor(int numThreads, String threadName) {
         if (numThreads <= 0) {
             throw new IllegalArgumentException();
         }
-
+        if (StringUtils.isBlank(threadName)) {
+            // sets default name
+            threadName = "OrderedSafeExecutor";
+        }
         threads = new ExecutorService[numThreads];
         for (int i = 0; i < numThreads; i++) {
-            threads[i] = Executors.newSingleThreadExecutor();
+            StringBuilder thName = new StringBuilder(threadName);
+            thName.append("-");
+            thName.append(i);
+            thName.append("-%d");
+            ThreadFactoryBuilder tfb = new ThreadFactoryBuilder()
+                    .setNameFormat(thName.toString());
+            threads[i] = Executors.newSingleThreadExecutor(tfb.build());
         }
     }
 

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestPerChannelBookieClient.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestPerChannelBookieClient.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestPerChannelBookieClient.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestPerChannelBookieClient.java Wed Oct  2 04:40:39 2013
@@ -72,7 +72,8 @@ public class TestPerChannelBookieClient 
         ClientSocketChannelFactory channelFactory
             = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
                                                 Executors.newCachedThreadPool());
-        OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+        OrderedSafeExecutor executor = new OrderedSafeExecutor(1,
+                "BKClientOrderedSafeExecutor");
 
         InetSocketAddress addr = getBookie(0);
         AtomicLong bytesOutstanding = new AtomicLong(0);
@@ -109,7 +110,8 @@ public class TestPerChannelBookieClient 
         ClientSocketChannelFactory channelFactory
             = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
                                                 Executors.newCachedThreadPool());
-        OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+        OrderedSafeExecutor executor = new OrderedSafeExecutor(1,
+                "BKClientOrderedSafeExecutor");
 
         InetSocketAddress addr = getBookie(0);
         AtomicLong bytesOutstanding = new AtomicLong(0);
@@ -144,7 +146,8 @@ public class TestPerChannelBookieClient 
         ClientSocketChannelFactory channelFactory
             = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
                                                 Executors.newCachedThreadPool());
-        OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+        OrderedSafeExecutor executor = new OrderedSafeExecutor(1,
+                "BKClientOrderedSafeExecutor");
         InetSocketAddress addr = getBookie(0);
 
         AtomicLong bytesOutstanding = new AtomicLong(0);
@@ -242,7 +245,8 @@ public class TestPerChannelBookieClient 
         ClientSocketChannelFactory channelFactory
             = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),
                                                 Executors.newCachedThreadPool());
-        final OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+        final OrderedSafeExecutor executor = new OrderedSafeExecutor(1,
+                "BKClientOrderedSafeExecutor");
         InetSocketAddress addr = getBookie(0);
         AtomicLong bytesOutstanding = new AtomicLong(0);
 

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java Wed Oct  2 04:40:39 2013
@@ -72,7 +72,7 @@ public class BookieClientTest extends Te
         bs.start();
         channelFactory = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors
                 .newCachedThreadPool());
-        executor = new OrderedSafeExecutor(2);
+        executor = new OrderedSafeExecutor(2, "BKClientOrderedSafeExecutor");
     }
 
     @Override

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/LoopbackClient.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/LoopbackClient.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/LoopbackClient.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/LoopbackClient.java Wed Oct  2 04:40:39 2013
@@ -97,7 +97,7 @@ class LoopbackClient implements WriteCal
         LoopbackClient lb;
         ClientSocketChannelFactory channelFactory = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors
                 .newCachedThreadPool());
-        OrderedSafeExecutor executor = new OrderedSafeExecutor(2);
+        OrderedSafeExecutor executor = new OrderedSafeExecutor(2, "BookieClientScheduler");
         try {
             InetSocketAddress addr = new InetSocketAddress("127.0.0.1", Integer.valueOf(args[2]).intValue());
             lb = new LoopbackClient(channelFactory, executor, begin, limit.intValue());

Modified: zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigClientImpl.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigClientImpl.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigClientImpl.java (original)
+++ zookeeper/bookkeeper/trunk/hedwig-client/src/main/java/org/apache/hedwig/client/netty/HedwigClientImpl.java Wed Oct  2 04:40:39 2013
@@ -24,7 +24,7 @@ import org.slf4j.LoggerFactory;
 import org.jboss.netty.channel.ChannelFactory;
 import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
 
-import com.google.protobuf.ByteString;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
 import org.apache.hedwig.client.api.Client;
 import org.apache.hedwig.client.conf.ClientConfiguration;
@@ -65,7 +65,10 @@ public class HedwigClientImpl implements
     // This will create its own client socket channel factory.
     protected HedwigClientImpl(ClientConfiguration cfg) {
         this(cfg, new NioClientSocketChannelFactory(
-                  Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
+                Executors.newCachedThreadPool(new ThreadFactoryBuilder()
+                        .setNameFormat("HedwigClient-NIOBoss-%d").build()),
+                Executors.newCachedThreadPool(new ThreadFactoryBuilder()
+                        .setNameFormat("HedwigClient-NIOWorker-%d").build())));
         ownChannelFactory = true;
     }
 

Modified: zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/benchmark/BookieBenchmark.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/benchmark/BookieBenchmark.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/benchmark/BookieBenchmark.java (original)
+++ zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/benchmark/BookieBenchmark.java Wed Oct  2 04:40:39 2013
@@ -41,7 +41,7 @@ public class BookieBenchmark extends Abs
     BookieClient bkc;
     InetSocketAddress addr;
     ClientSocketChannelFactory channelFactory;
-    OrderedSafeExecutor executor = new OrderedSafeExecutor(1);
+    OrderedSafeExecutor executor = new OrderedSafeExecutor(1, "BookieBenchmarkScheduler");
 
 
     public BookieBenchmark(String bookieHostPort)  throws Exception {

Modified: zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/netty/PubSubServer.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/netty/PubSubServer.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/netty/PubSubServer.java (original)
+++ zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/netty/PubSubServer.java Wed Oct  2 04:40:39 2013
@@ -31,6 +31,8 @@ import java.util.concurrent.SynchronousQ
 import java.util.concurrent.TimeUnit;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 import org.apache.bookkeeper.conf.ClientConfiguration;
 import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.BKException;
@@ -401,11 +403,19 @@ public class PubSubServer {
                 try {
                     // Since zk is needed by almost everyone,try to see if we
                     // need that first
-                    scheduler = Executors.newSingleThreadScheduledExecutor();
-                    serverChannelFactory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors
-                            .newCachedThreadPool());
-                    clientChannelFactory = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors
-                            .newCachedThreadPool());
+                    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();
+                    scheduler = Executors.newSingleThreadScheduledExecutor(tfb
+                            .setNameFormat("PubSubServerScheduler-%d").build());
+                    serverChannelFactory = new NioServerSocketChannelFactory(
+                            Executors.newCachedThreadPool(tfb.setNameFormat(
+                                    "PubSub-Server-NIOBoss-%d").build()),
+                            Executors.newCachedThreadPool(tfb.setNameFormat(
+                                    "PubSub-Server-NIOWorker-%d").build()));
+                    clientChannelFactory = new NioClientSocketChannelFactory(
+                            Executors.newCachedThreadPool(tfb.setNameFormat(
+                                    "PubSub-Client-NIOBoss-%d").build()),
+                            Executors.newCachedThreadPool(tfb.setNameFormat(
+                                    "PubSub-Client-NIOWorker-%d").build()));
 
                     instantiateZookeeperClient();
                     instantiateMetadataManagerFactory();

Modified: zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/persistence/ReadAheadCache.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/persistence/ReadAheadCache.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/persistence/ReadAheadCache.java (original)
+++ zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/persistence/ReadAheadCache.java Wed Oct  2 04:40:39 2013
@@ -154,7 +154,8 @@ public class ReadAheadCache implements P
         this.realPersistenceManager = realPersistenceManager;
         this.cfg = cfg;
         numCacheWorkers = cfg.getNumReadAheadCacheThreads();
-        cacheWorkers = new OrderedSafeExecutor(numCacheWorkers);
+        cacheWorkers = new OrderedSafeExecutor(numCacheWorkers,
+                "ReadAheadCacheScheduler");
         reloadConf(cfg);
     }
 

Modified: zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/proxy/HedwigProxy.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/proxy/HedwigProxy.java?rev=1528305&r1=1528304&r2=1528305&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/proxy/HedwigProxy.java (original)
+++ zookeeper/bookkeeper/trunk/hedwig-server/src/main/java/org/apache/hedwig/server/proxy/HedwigProxy.java Wed Oct  2 04:40:39 2013
@@ -45,6 +45,8 @@ import org.apache.hedwig.server.netty.Pu
 import org.apache.hedwig.server.netty.PubSubServerPipelineFactory;
 import org.apache.hedwig.server.netty.UmbrellaHandler;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
 public class HedwigProxy {
     static final Logger logger = LoggerFactory.getLogger(HedwigProxy.class);
 
@@ -78,9 +80,12 @@ public class HedwigProxy {
             @Override
             public void run() {
                 client = new HedwigClient(cfg);
-
-                serverSocketChannelFactory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(),
-                        Executors.newCachedThreadPool());
+                ThreadFactoryBuilder tfb = new ThreadFactoryBuilder();
+                serverSocketChannelFactory = new NioServerSocketChannelFactory(
+                        Executors.newCachedThreadPool(tfb.setNameFormat(
+                                "HedwigProxy-NIOBoss-%d").build()),
+                        Executors.newCachedThreadPool(tfb.setNameFormat(
+                                "HedwigProxy-NIOWorker-%d").build()));
                 initializeHandlers();
                 initializeNetty();