Merge "Bug 6014 - Named Thread pool Executors for better debugging"
authorSam Hague <shague@redhat.com>
Tue, 14 Jun 2016 02:09:13 +0000 (02:09 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 14 Jun 2016 02:09:13 +0000 (02:09 +0000)
netvirt/renderers/neutron/src/main/java/org/opendaylight/netvirt/netvirt/renderers/neutron/DelegatingDataTreeListener.java
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/NetvirtProvidersConfigImpl.java
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/PipelineOrchestratorImpl.java
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/GatewayMacResolverService.java
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/DelegatingDataTreeListener.java
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/EventDispatcherImpl.java
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OvsdbDataChangeListener.java
vpnservice/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpConfigurationManager.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnInterfaceManager.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnManager.java

index ec0c05b53959ff3252abd533b24844c36400d754..fd35781193f45a62ca8fe0a0bffc1ee4b1967a5a 100644 (file)
@@ -12,7 +12,10 @@ import com.google.common.base.Preconditions;
 import java.util.Collection;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
 import javax.annotation.Nonnull;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.controller.md.sal.binding.api.*;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -27,7 +30,9 @@ public class DelegatingDataTreeListener<T extends DataObject> implements AutoClo
     private static final Logger LOG = LoggerFactory.getLogger(DelegatingDataTreeListener.class);
     protected NeutronProvider provider;
     protected DataBroker db;
-    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-NeutronDTL-%d").build();
+    private final ExecutorService executorService = Executors.newFixedThreadPool(1, threadFactory);
     private final DataProcessor<T> dataProcessor;
     private ListenerRegistration<DelegatingDataTreeListener<T>> listenerRegistration;
 
index f158f1f58c776ea65d017192ea97a07e8d10d022..619e0b7d95dfa3c242332a3a78a3f6499000acc5 100644 (file)
@@ -10,6 +10,9 @@ package org.opendaylight.netvirt.openstack.netvirt.providers;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
@@ -29,7 +32,9 @@ public class NetvirtProvidersConfigImpl implements AutoCloseable, ConfigInterfac
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtProvidersConfigImpl.class);
     private final DataBroker dataBroker;
     private final ListenerRegistration<DataChangeListener> registration;
-    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-ProviderCfg-%d").build();
+    private final ExecutorService executorService = Executors.newFixedThreadPool(1, threadFactory);
     private final MdsalUtils mdsalUtils;
 
     public NetvirtProvidersConfigImpl(final DataBroker dataBroker, final short tableOffset) {
index 302b36a178772f7c7597b96fb5aa0a550ce6fcb2..e769f868574939a225e2a2debdf3477ba5a760f0 100644 (file)
@@ -15,7 +15,8 @@ import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
-
+import java.util.concurrent.ThreadFactory;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
 import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
@@ -82,7 +83,9 @@ public class PipelineOrchestratorImpl implements ConfigInterface, NodeCacheListe
     private Southbound southbound;
 
     public PipelineOrchestratorImpl() {
-        eventHandler = Executors.newSingleThreadExecutor();
+        ThreadFactory threadFactory = new ThreadFactoryBuilder()
+            .setNameFormat("NV-PipelineOrch-%d").build();
+        eventHandler = Executors.newSingleThreadExecutor(threadFactory);
         this.queue = new LinkedBlockingQueue<>();
         LOG.info("PipelineOrchestratorImpl constructor");
         start();
index 0ce4972403a2979f4456a34464b0df3319114bbf..8409fbc017f127345171ada8872abe2f6ccba62f 100644 (file)
@@ -15,6 +15,7 @@ import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
@@ -81,6 +82,7 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.ThreadFactory;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -105,9 +107,18 @@ public class GatewayMacResolverService extends AbstractServiceInstance
     private static final int WAIT_CYCLES = 3;
     private static final int PER_CYCLE_WAIT_DURATION = 1000;
     private static final int REFRESH_INTERVAL = 10;
-    private final ListeningExecutorService arpWatcherWall = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(ARP_WATCH_BROTHERS));
-    private final ScheduledExecutorService gatewayMacRefresherPool = Executors.newScheduledThreadPool(1);
-    private final ScheduledExecutorService refreshRequester = Executors.newSingleThreadScheduledExecutor();
+    private static final ThreadFactory threadFactoryArpWatcher = new ThreadFactoryBuilder()
+        .setNameFormat("NV-ArpWatcher-%d").build();
+    private static final ThreadFactory threadFactoryMacRefresher = new ThreadFactoryBuilder()
+        .setNameFormat("NV-GWMacRfrshr-%d").build();
+    private static final ThreadFactory threadFactoryRefreshReq = new ThreadFactoryBuilder()
+        .setNameFormat("NV-RfrshRqstr-%d").build();
+    private final ListeningExecutorService arpWatcherWall = MoreExecutors.listeningDecorator(
+        Executors.newFixedThreadPool(ARP_WATCH_BROTHERS, threadFactoryArpWatcher));
+    private final ScheduledExecutorService gatewayMacRefresherPool =
+        Executors.newScheduledThreadPool(1, threadFactoryMacRefresher);
+    private final ScheduledExecutorService refreshRequester =
+        Executors.newSingleThreadScheduledExecutor(threadFactoryRefreshReq);
     private AtomicBoolean initializationDone = new AtomicBoolean(false);
     private volatile ConfigurationService configurationService;
     private volatile NodeCacheManager nodeCacheManager;
index 4afd0c8857114573bf93973bd3e750f3c84c9e80..2d1412c0ff1d4031fd488d95e5f946af70cbb1fd 100644 (file)
@@ -11,10 +11,12 @@ package org.opendaylight.netvirt.openstack.netvirt.sfc;
 import java.util.Collection;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
 
 import javax.annotation.Nonnull;
 
 import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
@@ -32,7 +34,9 @@ import org.slf4j.LoggerFactory;
 public class DelegatingDataTreeListener<T extends DataObject> implements AutoCloseable, DataTreeChangeListener<T> {
     private static final Logger LOG = LoggerFactory.getLogger(DelegatingDataTreeListener.class);
     protected INetvirtSfcOF13Provider provider;
-    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-SfcDTL-%d").build();
+    private final ExecutorService executorService = Executors.newFixedThreadPool(1, threadFactory);
     private final INetvirtSfcDataProcessor<T> dataProcessor;
     private ListenerRegistration<DelegatingDataTreeListener<T>> listenerRegistration;
 
index 132dfd9fc67942a1b0f4bb7b8264eeb0581b0a1c..40fa9e4548e0ebc6a4fd5045438f678467a0c1fb 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.netvirt.openstack.netvirt.impl;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent;
 import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
 import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
@@ -23,6 +24,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.ThreadFactory;
 
 public class EventDispatcherImpl implements EventDispatcher, ConfigInterface {
     private static final Logger LOG = LoggerFactory.getLogger(EventDispatcher.class);
@@ -33,7 +35,9 @@ public class EventDispatcherImpl implements EventDispatcher, ConfigInterface {
     public EventDispatcherImpl() {
         events = new LinkedBlockingQueue<>();
         handlers = new AbstractHandler[AbstractEvent.HandlerType.size];
-        eventHandler = Executors.newSingleThreadExecutor();
+        ThreadFactory threadFactory = new ThreadFactoryBuilder()
+            .setNameFormat("NV-EvtDsptchr-%d").build();
+        eventHandler = Executors.newSingleThreadExecutor(threadFactory);
         start();
     }
 
index f5b97707d8f4ffbaff8a81a63b55b8638173aabf..8c880b4063a008906b563750045b73de39d4e11e 100644 (file)
@@ -11,7 +11,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
@@ -43,7 +45,9 @@ public class OvsdbDataChangeListener implements ClusteredDataChangeListener, Aut
     private static final Logger LOG = LoggerFactory.getLogger(OvsdbDataChangeListener.class);
     private DataBroker dataBroker = null;
     private ListenerRegistration<DataChangeListener> registration;
-    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-OvsdbDCL-%d").build();
+    private final ExecutorService executorService = Executors.newFixedThreadPool(1, threadFactory);
 
     public OvsdbDataChangeListener (DataBroker dataBroker) {
         this.dataBroker = dataBroker;
index a23e38fc83f60a43188396fe9e879c5856f00ba6..7649d72414bff8b2773e99a9eb1ee04e11898fb7 100644 (file)
@@ -22,6 +22,7 @@ import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.netvirt.bgpmanager.commands.ClearBgpCli;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
@@ -1496,7 +1497,9 @@ public class BgpConfigurationManager {
         delete(iid);
     }
 
-    static ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-BgpCfgMgr-%d").build();
+    static ScheduledExecutorService executor = Executors.newScheduledThreadPool(1, threadFactory);
     /*
     * Remove Stale Marked Routes after timer expiry.
     */
index 8521bf230400aad18b45e757d1031d4c5837f7c8..0d32d41e764bb8e8a3ca6b2c708653ef50d3d105 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.netvirt.vpnmanager;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.netvirt.bgpmanager.api.IBgpManager;
 import org.opendaylight.netvirt.fibmanager.api.IFibManager;
 import org.opendaylight.netvirt.vpnmanager.utilities.InterfaceUtils;
@@ -91,7 +92,9 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
     private static final Logger LOG = LoggerFactory.getLogger(VpnInterfaceManager.class);
     private ListenerRegistration<DataChangeListener> listenerRegistration, opListenerRegistration;
     private ConcurrentMap<String, Runnable> vpnIntfMap = new ConcurrentHashMap<String, Runnable>();
-    private ExecutorService executorService = Executors.newSingleThreadExecutor();
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-VpnIntfMgr-%d").build();
+    private ExecutorService executorService = Executors.newSingleThreadExecutor(threadFactory);
     private final DataBroker broker;
     private final IBgpManager bgpManager;
     private IFibManager fibManager;
index 89b8c33c5eb91feb1e8c9588d4ea4c368c85406e..62e35bc67a7a47a9585a0cfdbe189b23ca031b15 100644 (file)
@@ -13,6 +13,7 @@ import java.util.concurrent.*;
 
 import com.google.common.util.concurrent.CheckedFuture;
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.netvirt.bgpmanager.api.IBgpManager;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
@@ -58,7 +59,9 @@ public class VpnManager extends AbstractDataChangeListener<VpnInstance> implemen
     private static final Logger LOG = LoggerFactory.getLogger(VpnManager.class);
     private ListenerRegistration<DataChangeListener> listenerRegistration, fibListenerRegistration, opListenerRegistration;
     private ConcurrentMap<String, Runnable> vpnOpMap = new ConcurrentHashMap<String, Runnable>();
-    private ExecutorService executorService = Executors.newSingleThreadExecutor();
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-VpnMgr-%d").build();
+    private ExecutorService executorService = Executors.newSingleThreadExecutor(threadFactory);
     private final DataBroker broker;
     private final IBgpManager bgpManager;
     private IdManagerService idManager;