From f3cb74f199785265cce0fb6512e5e017e567eeb1 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 11 Aug 2020 21:55:00 +0200 Subject: [PATCH] [Fix] Ignore updates if update executor service is shutdown --- .../java/li/strolch/plc/core/DefaultPlcHandler.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/strolch-plc-core/src/main/java/li/strolch/plc/core/DefaultPlcHandler.java b/strolch-plc-core/src/main/java/li/strolch/plc/core/DefaultPlcHandler.java index dc39b15..edb7148 100644 --- a/strolch-plc-core/src/main/java/li/strolch/plc/core/DefaultPlcHandler.java +++ b/strolch-plc-core/src/main/java/li/strolch/plc/core/DefaultPlcHandler.java @@ -10,6 +10,7 @@ import static li.strolch.utils.helper.StringHelper.formatNanoDuration; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingDeque; @@ -249,14 +250,18 @@ public class DefaultPlcHandler extends StrolchComponent implements PlcHandler, P } private void updateState(PlcAddress address, Object value) { - if (this.asyncAddressUpdate) - getExecutorService("PlcAddressUpdater").submit(() -> updatePlcAddress(address, value)); - else + if (this.asyncAddressUpdate) { + ExecutorService service = getExecutorService("PlcAddressUpdater"); + if (!service.isShutdown()) + service.submit(() -> updatePlcAddress(address, value)); + } else updatePlcAddress(address, value); } private void asyncUpdateState(PlcConnection connection) { - getExecutorService("PlcConnectionUpdater").submit(() -> updateConnectionState(connection)); + ExecutorService service = getExecutorService("PlcConnectionUpdater"); + if (!service.isShutdown()) + service.submit(() -> updateConnectionState(connection)); } private void updatePlcAddress(PlcAddress address, Object value) {