SONAR suggestion - proper handling of InterruptedException

Change-Id: I67a93c064708c207d9ce83fac319682c2d17db60
diff --git a/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java b/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java
index f48b7f5..5dff893 100644
--- a/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java
+++ b/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java
@@ -182,6 +182,7 @@
             log.error("Unable to execute command {}", command, e);
         } catch (InterruptedException e) {
             log.error("Interrupted executing command {}", command, e);
+            Thread.currentThread().interrupt();
         }
     }
 
diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
index 28abb7d..3c9f223 100644
--- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
@@ -226,6 +226,7 @@
                     listener.event(queue.take());
                 } catch (InterruptedException e) {
                     log.info("Route listener event thread shutting down: {}", e.getMessage());
+                    Thread.currentThread().interrupt();
                     break;
                 } catch (Exception e) {
                     log.warn("Exception during route event handler", e);
diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java
index 1ab69eb..38cfead 100644
--- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java
+++ b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java
@@ -165,6 +165,7 @@
             Thread.sleep(100);
         } catch (InterruptedException e) {
             log.error("Exception occurred while getting the bandwidth.");
+            Thread.currentThread().interrupt();
         }
         Set<Resource> resources = resService.getRegisteredResources(devResource.id());
         for (Resource res : resources) {
diff --git a/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java b/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java
index 7c91bf3..c290da3 100644
--- a/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java
+++ b/apps/pi-demo/common/src/main/java/org/onosproject/pi/demo/app/common/AbstractUpgradableFabricApp.java
@@ -207,6 +207,7 @@
         } catch (InterruptedException e) {
             List<Runnable> runningTasks = executorService.shutdownNow();
             log.warn("Unable to stop the following tasks: {}", runningTasks);
+            Thread.currentThread().interrupt();
         }
         scheduledExecutorService.shutdown();
         deviceService.removeListener(deviceListener);
@@ -297,7 +298,7 @@
                 Thread.sleep(CLEANUP_SLEEP);
             } catch (InterruptedException e) {
                 log.warn("Cleanup sleep interrupted!");
-                Thread.interrupted();
+                Thread.currentThread().interrupt();
             }
         }
 
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/RouteManager.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/RouteManager.java
index 0dc5dbe..e1acc2c 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/RouteManager.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/RouteManager.java
@@ -343,6 +343,7 @@
                     listener.event(queue.take());
                 } catch (InterruptedException e) {
                     log.info("Route listener event thread shutting down: {}", e.getMessage());
+                    Thread.currentThread().interrupt();
                     break;
                 } catch (Exception e) {
                     log.warn("Exception during route event handler", e);
diff --git a/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricManager.java b/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricManager.java
index 81dd602..470148b 100644
--- a/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricManager.java
+++ b/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricManager.java
@@ -529,6 +529,8 @@
                         try {
                             refreshMonitor.wait(IDLE_INTERVAL_MSEC);
                         } catch (InterruptedException e) {
+                            log.warn("run thread interrupted", e);
+                            Thread.currentThread().interrupt();
                         }
                     }
                     doRefreshMarked = doRefresh;
diff --git a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfApp.java b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfApp.java
index 5e8900a..256edfc 100644
--- a/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfApp.java
+++ b/apps/test/primitive-perf/src/main/java/org/onosproject/primitiveperf/PrimitivePerfApp.java
@@ -256,6 +256,7 @@
                 workers.awaitTermination(10, TimeUnit.MILLISECONDS);
             } catch (InterruptedException e) {
                 log.warn("Failed to stop worker", e);
+                Thread.currentThread().interrupt();
             }
         }
 
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
index c9a0b50..e3a63b3 100644
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
@@ -410,6 +410,7 @@
                     mapEventQueue.put(mapEvent);
                 } catch (InterruptedException e) {
                     log.warn("Unable to queue event {} ", mapEvent, e);
+                    Thread.currentThread().interrupt();
                 }
             }
         }
@@ -446,6 +447,7 @@
                     mapEventQueue.put(mapEvent);
                 } catch (InterruptedException e) {
                     log.warn("Unable to queue event {} ", mapEvent, e);
+                    Thread.currentThread().interrupt();
                 }
             }
         }
@@ -487,6 +489,7 @@
                     mapEventQueue.put(mapEvent);
                 } catch (InterruptedException e) {
                     log.warn("Unable to queue event {} ", mapEvent, e);
+                    Thread.currentThread().interrupt();
                 }
             }
         }
@@ -528,6 +531,7 @@
                     mapEventQueue.put(mapEvent);
                 } catch (InterruptedException e) {
                     log.warn("Unable to queue event {} ", mapEvent, e);
+                    Thread.currentThread().interrupt();
                 }
             }
         }
@@ -568,6 +572,7 @@
                     mapEventQueue.put(mapEvent);
                 } catch (InterruptedException e) {
                     log.warn("Unable to queue event {} ", mapEvent, e);
+                    Thread.currentThread().interrupt();
                 }
             }
         }
@@ -608,6 +613,7 @@
                     mapEventQueue.put(mapEvent);
                 } catch (InterruptedException e) {
                     log.warn("Unable to queue event {} ", mapEvent, e);
+                    Thread.currentThread().interrupt();
                 }
             }
         }
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
index 5ce27e3..5775a57 100644
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
@@ -437,6 +437,7 @@
                 }
             } catch (InterruptedException e) {
                 log.warn("TopologyMergerTask is interrupted");
+                Thread.currentThread().interrupt();
             } catch (Exception e) {
                 log.warn("Unable to merge topology", e);
             }
diff --git a/apps/yang/src/main/java/org/onosproject/yang/impl/YangLiveCompilerManager.java b/apps/yang/src/main/java/org/onosproject/yang/impl/YangLiveCompilerManager.java
index d109dc3..66d296a 100644
--- a/apps/yang/src/main/java/org/onosproject/yang/impl/YangLiveCompilerManager.java
+++ b/apps/yang/src/main/java/org/onosproject/yang/impl/YangLiveCompilerManager.java
@@ -227,6 +227,7 @@
             }
         } catch (InterruptedException e) {
             log.error("Interrupted executing command {}", command, e);
+            Thread.currentThread().interrupt();
         }
     }
 }
diff --git a/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java b/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java
index 873a0b8..1773154 100644
--- a/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java
+++ b/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java
@@ -196,6 +196,7 @@
             try {
                 Thread.sleep((int) Math.pow(2, iterations < 7 ? ++iterations : iterations) * 10L);
             } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
                 throw Throwables.propagate(e);
             }
         }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/app/DistributedApplicationStore.java b/core/store/dist/src/main/java/org/onosproject/store/app/DistributedApplicationStore.java
index 243c3c2..564c3be 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/app/DistributedApplicationStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/app/DistributedApplicationStore.java
@@ -610,6 +610,7 @@
             }
         } catch (InterruptedException e) {
             log.warn("Interrupted while fetching bits for application {}", app.id().name());
+            Thread.currentThread().interrupt();
         }
     }
 
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 7c23823..7f593e7 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
@@ -255,6 +255,7 @@
             }
         } catch (InterruptedException e) {
             log.error("Error during executor shutdown", e);
+            Thread.currentThread().interrupt();
         }
 
         deviceDescs.clear();
diff --git a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java
index 9b28d1d..03405d7 100644
--- a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java
+++ b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java
@@ -214,6 +214,7 @@
                                 session, DatastoreId.RUNNING);
                         return; //If it did not throw an exception
                     } catch (InterruptedException e1) {
+                        Thread.currentThread().interrupt();
                         log.debug("Error when deleting BWP profile on EA1000" +
                                 " - trying again in 1 sec", e1);
                     } catch (NetconfException e1) {
diff --git a/incubator/protobuf/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java b/incubator/protobuf/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java
index ada1253..2c2d864 100644
--- a/incubator/protobuf/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java
+++ b/incubator/protobuf/registry/src/main/java/org/onosproject/protobuf/registry/GrpcServiceRegistryImpl.java
@@ -151,6 +151,7 @@
         } catch (InterruptedException e) {
             log.error("Awaiting server termination failed with error {}",
                       e.getMessage());
+            Thread.currentThread().interrupt();
         }
         if (!server.isTerminated()) {
             server.shutdownNow();
@@ -159,6 +160,7 @@
             } catch (InterruptedException e) {
                 log.error("Server failed to terminate as expected with error" +
                                   " {}", e.getMessage());
+                Thread.currentThread().interrupt();
             }
         }
         return server.isTerminated();
diff --git a/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java b/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java
index bbcd99f..6f233c8 100644
--- a/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java
+++ b/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcControllerImpl.java
@@ -171,6 +171,7 @@
             } catch (InterruptedException e) {
                 log.warn("Channel {} didn't shut down in time.");
                 channel.shutdownNow();
+                Thread.currentThread().interrupt();
             }
 
             channels.remove(channelId);
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java
index 794d623..ea10996 100644
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java
+++ b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java
@@ -197,6 +197,7 @@
                     //remove from bin
                     lsaBin.removeOspfLsa((String) key, lsa);
                 } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
                     log.debug("Error::LSDBAge::maxAgeLsa::{}", e.getMessage());
                 }
             }
@@ -215,6 +216,7 @@
                 //remove from bin
                 maxAgeBin.removeOspfLsa((String) key, lsa);
             } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
                 log.debug("Error::LSDBAge::maxAgeLsa::{}", e.getMessage());
             }
         }
@@ -249,6 +251,7 @@
                     lsaBin.removeOspfLsa((String) key, lsa);
                 }
             } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
                 log.debug("Error::LSDBAge::refreshLsa::{}", e.getMessage());
             }
         }
@@ -272,6 +275,7 @@
                 try {
                     lsaQueue.put(lsa);
                 } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
                     log.debug("Error::LSDBAge::checkAges::{}", e.getMessage());
                 }
             }
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
index 534ef06..905a690 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
@@ -774,6 +774,7 @@
                 executorService.awaitTermination(5, TimeUnit.SECONDS);
             } catch (InterruptedException e) {
                 log.warn("Executor service didn't shutdown in time.");
+                Thread.currentThread().interrupt();
             }
         } finally {
             writeLock.unlock();
diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/TopologySimulator.java b/providers/null/src/main/java/org/onosproject/provider/nil/TopologySimulator.java
index 8152da3..a4ad559 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/TopologySimulator.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/TopologySimulator.java
@@ -289,6 +289,7 @@
             deviceLatch.await(maxWaitSeconds, TimeUnit.SECONDS);
         } catch (InterruptedException e) {
             log.warn("Device events did not arrive in time");
+            Thread.currentThread().interrupt();
         }
         deviceService.removeListener(deviceEventCounter);
     }
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
index 699a1b7..c67f2e9 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
@@ -306,6 +306,7 @@
                               sw.getStringId());
                     // for exiting while loop gracefully
                     interrupted = true;
+                    Thread.currentThread().interrupt();
                 }
             } else {
                 log.debug("ofFlowStatsRequestFlowSend: previous FlowStatsRequestAll (xid={})" +
diff --git a/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java b/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java
index ced2c2c..d439766 100644
--- a/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java
+++ b/providers/ovsdb/device/src/main/java/org/onosproject/ovsdb/providers/device/OvsdbDeviceProvider.java
@@ -221,6 +221,7 @@
             executor.awaitTermination(5, TimeUnit.SECONDS);
         } catch (InterruptedException e) {
             log.error("Timeout while waiting for child threads to finish because: " + e.getMessage());
+            Thread.currentThread().interrupt();
         }
     }
 }
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
index 9b936e8..a6fa58b 100644
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
+++ b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
@@ -1969,6 +1969,7 @@
                     executor.awaitTermination(WAIT_TIME, TimeUnit.SECONDS);
                 } catch (InterruptedException e) {
                     log.error("updating delegation failed");
+                    Thread.currentThread().interrupt();
                 }
             }
         }
diff --git a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java
index 5e33c1d..4c0e048 100644
--- a/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java
+++ b/providers/rest/device/src/main/java/org/onosproject/provider/rest/device/impl/RestDeviceProvider.java
@@ -453,6 +453,7 @@
                 return false;
             } catch (InterruptedException ex) {
                 log.warn("Connection to device {} interrupted", dev.deviceId());
+                Thread.currentThread().interrupt();
                 return false;
             } catch (ExecutionException ex) {
                 log.warn("Connection to device {} had a execution exception", dev.deviceId());
diff --git a/providers/snmp/device/src/main/java/org/onosproject/provider/snmp/device/impl/SnmpDeviceProvider.java b/providers/snmp/device/src/main/java/org/onosproject/provider/snmp/device/impl/SnmpDeviceProvider.java
index 281a7b3..5a78260 100644
--- a/providers/snmp/device/src/main/java/org/onosproject/provider/snmp/device/impl/SnmpDeviceProvider.java
+++ b/providers/snmp/device/src/main/java/org/onosproject/provider/snmp/device/impl/SnmpDeviceProvider.java
@@ -156,6 +156,7 @@
             });
             deviceBuilderExecutor.awaitTermination(1000, TimeUnit.MILLISECONDS);
         } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
             log.error("Device builder did not terminate");
         }
         deviceBuilderExecutor.shutdownNow();
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index 4b2cac9..69baf47 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -388,6 +388,7 @@
         try {
             Thread.sleep(ms);
         } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
             throw new IllegalStateException("Interrupted", e);
         }
     }
@@ -460,6 +461,7 @@
         try {
             Thread.sleep(random.nextInt(ms));
         } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
             throw new IllegalStateException("Interrupted", e);
         }
     }
@@ -474,6 +476,7 @@
         try {
             Thread.sleep(ms, nanos);
         } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
             throw new IllegalStateException("Interrupted", e);
         }
     }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/DiagnosticsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/DiagnosticsWebResource.java
index 6b951e0..f11522d 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/DiagnosticsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/DiagnosticsWebResource.java
@@ -69,6 +69,7 @@
             }
         } catch (InterruptedException e) {
             log.error("Interrupted executing command {}", command, e);
+            Thread.currentThread().interrupt();
         }
     }
 }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
index 463f822..278fa07 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
@@ -355,6 +355,7 @@
                 latch.await(WITHDRAW_EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
             } catch (InterruptedException e) {
                 log.info("REST Delete operation timed out waiting for intent {}", k);
+                Thread.currentThread().interrupt();
             }
             // double check the state
             IntentState state = service.getIntentState(k);