Improve Executors related logging behavior

- Specify Logger for the Executor
- Use Executor#execute instead of ExecutorService#submit for
  fire and forget type of usage.
   Note: submit() will swallow thrown Exception

Change-Id: I507b841dc3feedf4ad20a746c304518d68fb846a
diff --git a/apps/events/src/main/java/org/onosproject/events/EventHistoryManager.java b/apps/events/src/main/java/org/onosproject/events/EventHistoryManager.java
index 82d179a..7e4be17 100644
--- a/apps/events/src/main/java/org/onosproject/events/EventHistoryManager.java
+++ b/apps/events/src/main/java/org/onosproject/events/EventHistoryManager.java
@@ -115,7 +115,8 @@
         appId = coreService.registerApplication("org.onosproject.events");
         log.debug("Registered as {}", appId);
 
-        pruner = newSingleThreadScheduledExecutor(minPriority(groupedThreads("onos/events", "history-pruner")));
+        pruner = newSingleThreadScheduledExecutor(
+                  minPriority(groupedThreads("onos/events", "history-pruner", log)));
 
         pruner.scheduleWithFixedDelay(this::pruneEventHistoryTask,
                                       pruneInterval, pruneInterval, TimeUnit.SECONDS);
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index 60fd95a..5ef70fc 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -125,7 +125,8 @@
 
     @Activate
     public void activate() {
-        backgroundService = newSingleThreadScheduledExecutor(groupedThreads("onos/device", "manager-background"));
+        backgroundService = newSingleThreadScheduledExecutor(
+                             groupedThreads("onos/device", "manager-background", log));
         localNodeId = clusterService.getLocalNode().id();
 
         store.setDelegate(delegate);
@@ -499,7 +500,7 @@
                              deviceId, response, mastershipService.getLocalRole(deviceId));
                     // roleManager got the device to comply, but doesn't agree with
                     // the store; use the store's view, then try to reassert.
-                    backgroundService.submit(() -> reassertRole(deviceId, mastershipService.getLocalRole(deviceId)));
+                    backgroundService.execute(() -> reassertRole(deviceId, mastershipService.getLocalRole(deviceId)));
                     return;
                 }
             } else {
@@ -684,7 +685,7 @@
 
         @Override
         public void event(MastershipEvent event) {
-            backgroundService.submit(() -> {
+            backgroundService.execute(() -> {
                 try {
                     handleMastershipEvent(event);
                 } catch (Exception e) {
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
index 94a782a..c3f1200 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
@@ -122,10 +122,10 @@
     private final FlowRuleDriverProvider defaultProvider = new FlowRuleDriverProvider();
 
     protected ExecutorService deviceInstallers =
-            Executors.newFixedThreadPool(32, groupedThreads("onos/flowservice", "device-installer-%d"));
+            Executors.newFixedThreadPool(32, groupedThreads("onos/flowservice", "device-installer-%d", log));
 
     protected ExecutorService operationsService =
-            Executors.newFixedThreadPool(32, groupedThreads("onos/flowservice", "operations-%d"));
+            Executors.newFixedThreadPool(32, groupedThreads("onos/flowservice", "operations-%d, log"));
 
     private IdGenerator idGenerator;
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
index 61fc0df..1fc64d6 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
@@ -200,7 +200,7 @@
         if (newNumThreads != numThreads) {
             numThreads = newNumThreads;
             ExecutorService oldWorkerExecutor = workerExecutor;
-            workerExecutor = newFixedThreadPool(numThreads, groupedThreads("onos/intent", "worker-%d"));
+            workerExecutor = newFixedThreadPool(numThreads, groupedThreads("onos/intent", "worker-%d", log));
             if (oldWorkerExecutor != null) {
                 oldWorkerExecutor.shutdown();
             }
diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java
index 1792bce..8e36ea9 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java
@@ -138,11 +138,11 @@
     }
 
     private void registerDeviceResource(Device device) {
-        executor.submit(() -> adminService.register(Resources.discrete(device.id()).resource()));
+        executor.execute(() -> adminService.register(Resources.discrete(device.id()).resource()));
     }
 
     private void unregisterDeviceResource(Device device) {
-        executor.submit(() -> {
+        executor.execute(() -> {
             DiscreteResource devResource = Resources.discrete(device.id()).resource();
             List<Resource> allResources = getDescendantResources(devResource);
             adminService.unregister(Lists.transform(allResources, Resource::id));
@@ -151,7 +151,7 @@
 
     private void registerPortResource(Device device, Port port) {
         Resource portPath = Resources.discrete(device.id(), port.number()).resource();
-        executor.submit(() -> {
+        executor.execute(() -> {
             adminService.register(portPath);
 
             queryBandwidth(device.id(), port.number())
@@ -198,7 +198,7 @@
     }
 
     private void unregisterPortResource(Device device, Port port) {
-        executor.submit(() -> {
+        executor.execute(() -> {
             DiscreteResource portResource = Resources.discrete(device.id(), port.number()).resource();
             List<Resource> allResources = getDescendantResources(portResource);
             adminService.unregister(Lists.transform(allResources, Resource::id));
diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java
index d6f9fdb..07561e4 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceNetworkConfigListener.java
@@ -89,7 +89,7 @@
     @Override
     public void event(NetworkConfigEvent event) {
         if (event.configClass() == BandwidthCapacity.class) {
-            executor.submit(() -> {
+            executor.execute(() -> {
             try {
                 handleBandwidthCapacity(event);
             } catch (Exception e) {
diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java
index 1dbf197..77216ff 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceRegistrar.java
@@ -84,7 +84,7 @@
     private DeviceListener deviceListener;
 
     private final ExecutorService executor =
-            Executors.newSingleThreadExecutor(groupedThreads("onos/resource", "registrar"));
+            Executors.newSingleThreadExecutor(groupedThreads("onos/resource", "registrar", log));
 
     private NetworkConfigListener cfgListener;
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
index 51f759a..36699b0 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
@@ -68,6 +68,7 @@
 import static com.google.common.collect.Multimaps.newSetMultimap;
 import static com.google.common.collect.Multimaps.synchronizedSetMultimap;
 import static com.google.common.io.ByteStreams.toByteArray;
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static org.onlab.util.Tools.groupedThreads;
 import static org.onlab.util.Tools.randomDelay;
@@ -138,10 +139,10 @@
                 .register(MultiValuedTimestamp.class)
                 .register(InternalState.class);
 
-        executor = Executors.newSingleThreadScheduledExecutor(groupedThreads("onos/app", "store"));
+        executor = newSingleThreadScheduledExecutor(groupedThreads("onos/app", "store", log));
 
         messageHandlingExecutor = Executors.newSingleThreadExecutor(
-                groupedThreads("onos/store/app", "message-handler"));
+                groupedThreads("onos/store/app", "message-handler", log));
 
         clusterCommunicator.<String, byte[]>addSubscriber(APP_BITS_REQUEST,
                                                           bytes -> new String(bytes, Charsets.UTF_8),
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index a10b79d..e5f40b3 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -96,13 +96,13 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Predicates.notNull;
 import static com.google.common.base.Verify.verify;
+import static java.util.concurrent.Executors.newCachedThreadPool;
 import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static org.apache.commons.lang3.concurrent.ConcurrentUtils.createIfAbsentUnchecked;
 import static org.onlab.util.Tools.groupedThreads;
@@ -200,10 +200,10 @@
 
     @Activate
     public void activate() {
-        executor = Executors.newCachedThreadPool(groupedThreads("onos/device", "fg-%d"));
+        executor = newCachedThreadPool(groupedThreads("onos/device", "fg-%d", log));
 
         backgroundExecutor =
-                newSingleThreadScheduledExecutor(minPriority(groupedThreads("onos/device", "bg-%d")));
+                newSingleThreadScheduledExecutor(minPriority(groupedThreads("onos/device", "bg-%d", log)));
 
         clusterCommunicator.addSubscriber(
                 GossipDeviceStoreMessageSubjects.DEVICE_UPDATE, new InternalDeviceEventListener(), executor);
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
index a2b9995..7b94670 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
@@ -305,7 +305,7 @@
             msgHandlerPoolSize = newPoolSize;
             ExecutorService oldMsgHandler = messageHandlingExecutor;
             messageHandlingExecutor = Executors.newFixedThreadPool(
-                    msgHandlerPoolSize, groupedThreads("onos/store/flow", "message-handlers"));
+                    msgHandlerPoolSize, groupedThreads("onos/store/flow", "message-handlers", log));
 
             // replace previously registered handlers.
             registerMessageHandlers(messageHandlingExecutor);
diff --git a/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java b/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
index bd5eea5..01f3cb2 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/mastership/impl/ConsistentDeviceMastershipStore.java
@@ -123,10 +123,10 @@
     public void activate() {
         messageHandlingExecutor =
                 Executors.newSingleThreadExecutor(
-                        groupedThreads("onos/store/device/mastership", "message-handler"));
+                        groupedThreads("onos/store/device/mastership", "message-handler", log));
         transferExecutor =
                 Executors.newSingleThreadScheduledExecutor(
-                        groupedThreads("onos/store/device/mastership", "mastership-transfer-executor"));
+                        groupedThreads("onos/store/device/mastership", "mastership-transfer-executor", log));
         clusterCommunicator.addSubscriber(ROLE_RELINQUISH_SUBJECT,
                 SERIALIZER::decode,
                 this::relinquishLocalRole,
diff --git a/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java b/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java
index 8e59ef6..c3f907a 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/statistic/impl/DistributedFlowStatisticStore.java
@@ -118,7 +118,7 @@
 
         messageHandlingExecutor = Executors.newFixedThreadPool(
                 messageHandlerThreadPoolSize,
-                groupedThreads("onos/store/statistic", "message-handlers"));
+                groupedThreads("onos/store/statistic", "message-handlers", log));
 
         clusterCommunicator.addSubscriber(
                 GET_CURRENT, SERIALIZER::decode, this::getCurrentStatisticInternal, SERIALIZER::encode,
@@ -200,6 +200,7 @@
         previous.computeIfPresent(cp, (c, e) -> { e.remove(rule); return e; });
     }
 
+    @Override
     public synchronized void updateFlowStatistic(FlowEntry rule) {
         ConnectPoint cp = buildConnectPoint(rule);
         if (cp == null) {