[miio] Avoid shutting down shared executor service (#11166)
* [miio] Avoid shutting down shared executor service * Closing #11152 * Better identify communication threads Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
This commit is contained in:
parent
0a96792a93
commit
31cde42da5
|
@ -77,7 +77,9 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
|
||||||
protected static final Gson GSON = new GsonBuilder().create();
|
protected static final Gson GSON = new GsonBuilder().create();
|
||||||
protected static final String TIMESTAMP = "timestamp";
|
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 @Nullable ScheduledFuture<?> pollingJob;
|
||||||
protected MiIoDevices miDevice = MiIoDevices.UNKNOWN;
|
protected MiIoDevices miDevice = MiIoDevices.UNKNOWN;
|
||||||
protected boolean isIdentified;
|
protected boolean isIdentified;
|
||||||
|
@ -134,7 +136,7 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
|
||||||
getThing().getThingTypeUID());
|
getThing().getThingTypeUID());
|
||||||
|
|
||||||
ScheduledThreadPoolExecutor miIoScheduler = new ScheduledThreadPoolExecutor(3,
|
ScheduledThreadPoolExecutor miIoScheduler = new ScheduledThreadPoolExecutor(3,
|
||||||
new NamedThreadFactory(getThing().getUID().getAsString(), true));
|
new NamedThreadFactory("binding-" + getThing().getUID().getAsString(), true));
|
||||||
miIoScheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
|
miIoScheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
|
||||||
miIoScheduler.setRemoveOnCancelPolicy(true);
|
miIoScheduler.setRemoveOnCancelPolicy(true);
|
||||||
this.miIoScheduler = miIoScheduler;
|
this.miIoScheduler = miIoScheduler;
|
||||||
|
|
|
@ -249,7 +249,7 @@ public class MiIoAsyncCommunication {
|
||||||
public synchronized void startReceiver() {
|
public synchronized void startReceiver() {
|
||||||
MessageSenderThread senderThread = this.senderThread;
|
MessageSenderThread senderThread = this.senderThread;
|
||||||
if (senderThread == null || !senderThread.isAlive()) {
|
if (senderThread == null || !senderThread.isAlive()) {
|
||||||
senderThread = new MessageSenderThread();
|
senderThread = new MessageSenderThread(deviceId);
|
||||||
senderThread.start();
|
senderThread.start();
|
||||||
this.senderThread = senderThread;
|
this.senderThread = senderThread;
|
||||||
}
|
}
|
||||||
|
@ -261,14 +261,17 @@ public class MiIoAsyncCommunication {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private class MessageSenderThread extends Thread {
|
private class MessageSenderThread extends Thread {
|
||||||
public MessageSenderThread() {
|
private final String deviceId;
|
||||||
super("Mi IO MessageSenderThread");
|
|
||||||
|
public MessageSenderThread(String deviceId) {
|
||||||
|
super("OH-binding-miio-MessageSenderThread-" + deviceId);
|
||||||
setDaemon(true);
|
setDaemon(true);
|
||||||
|
this.deviceId = deviceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
logger.debug("Starting Mi IO MessageSenderThread");
|
logger.debug("Starting Mi IO MessageSenderThread {}", deviceId);
|
||||||
while (!interrupted()) {
|
while (!interrupted()) {
|
||||||
try {
|
try {
|
||||||
if (concurrentLinkedQueue.isEmpty()) {
|
if (concurrentLinkedQueue.isEmpty()) {
|
||||||
|
@ -291,11 +294,11 @@ public class MiIoAsyncCommunication {
|
||||||
// That's our signal to stop
|
// That's our signal to stop
|
||||||
break;
|
break;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.warn("Error while polling/sending message", e);
|
logger.warn("Error while polling/sending message for {}", deviceId, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closeSocket();
|
closeSocket();
|
||||||
logger.debug("Finished Mi IO MessageSenderThread");
|
logger.debug("Finished Mi IO MessageSenderThread {}", deviceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue