]> git.basschouten.com Git - openhab-addons.git/commitdiff
[miio] Avoid shutting down shared executor service (#11166)
authorMarcel <marcel@verpaalen.com>
Wed, 8 Sep 2021 20:13:32 +0000 (22:13 +0200)
committerGitHub <noreply@github.com>
Wed, 8 Sep 2021 20:13:32 +0000 (22:13 +0200)
* [miio] Avoid shutting down shared executor service

* Closing #11152
* Better identify communication threads

Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/transport/MiIoAsyncCommunication.java

index 93acefd1b46e3690d3fa7ccfdeb0cdec55fd1c70..b97d68cd10d867d969ce2dea2dac9a7346db697f 100644 (file)
@@ -77,7 +77,9 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
     protected static final Gson GSON = new GsonBuilder().create();
     protected static final String TIMESTAMP = "timestamp";
 
-    protected ScheduledExecutorService miIoScheduler = scheduler;
+    protected ScheduledExecutorService miIoScheduler = new ScheduledThreadPoolExecutor(3,
+            new NamedThreadFactory("binding-" + getThing().getUID().getAsString(), true));
+
     protected @Nullable ScheduledFuture<?> pollingJob;
     protected MiIoDevices miDevice = MiIoDevices.UNKNOWN;
     protected boolean isIdentified;
@@ -134,7 +136,7 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
                 getThing().getThingTypeUID());
 
         ScheduledThreadPoolExecutor miIoScheduler = new ScheduledThreadPoolExecutor(3,
-                new NamedThreadFactory(getThing().getUID().getAsString(), true));
+                new NamedThreadFactory("binding-" + getThing().getUID().getAsString(), true));
         miIoScheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
         miIoScheduler.setRemoveOnCancelPolicy(true);
         this.miIoScheduler = miIoScheduler;
index 63a75a4d55dd97f356c85aef9eec4b10f3fa1bbb..95be2fba35aa850531c57396d174f13361523310 100644 (file)
@@ -249,7 +249,7 @@ public class MiIoAsyncCommunication {
     public synchronized void startReceiver() {
         MessageSenderThread senderThread = this.senderThread;
         if (senderThread == null || !senderThread.isAlive()) {
-            senderThread = new MessageSenderThread();
+            senderThread = new MessageSenderThread(deviceId);
             senderThread.start();
             this.senderThread = senderThread;
         }
@@ -261,14 +261,17 @@ public class MiIoAsyncCommunication {
      *
      */
     private class MessageSenderThread extends Thread {
-        public MessageSenderThread() {
-            super("Mi IO MessageSenderThread");
+        private final String deviceId;
+
+        public MessageSenderThread(String deviceId) {
+            super("OH-binding-miio-MessageSenderThread-" + deviceId);
             setDaemon(true);
+            this.deviceId = deviceId;
         }
 
         @Override
         public void run() {
-            logger.debug("Starting Mi IO MessageSenderThread");
+            logger.debug("Starting Mi IO MessageSenderThread {}", deviceId);
             while (!interrupted()) {
                 try {
                     if (concurrentLinkedQueue.isEmpty()) {
@@ -291,11 +294,11 @@ public class MiIoAsyncCommunication {
                     // That's our signal to stop
                     break;
                 } catch (Exception e) {
-                    logger.warn("Error while polling/sending message", e);
+                    logger.warn("Error while polling/sending message for {}", deviceId, e);
                 }
             }
             closeSocket();
-            logger.debug("Finished Mi IO MessageSenderThread");
+            logger.debug("Finished Mi IO MessageSenderThread {}", deviceId);
         }
     }