From a3a67278e509382842dfbdabc05fa77690bfbb96 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 3 May 2022 08:52:40 +0200 Subject: [PATCH] [Minor] Fixed shutdown NPEs --- .../java/li/strolch/plc/core/DefaultPlcHandler.java | 11 ++++++----- .../li/strolch/plc/gw/client/PlcGwClientHandler.java | 7 ++++--- 2 files changed, 10 insertions(+), 8 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 edb7148..6b58541 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 @@ -150,7 +150,8 @@ public class DefaultPlcHandler extends StrolchComponent implements PlcHandler, P getContainer().getPrivilegeHandler().invalidate(this.ctx.getCertificate()); this.run = false; - this.messageSenderTask.cancel(true); + if (this.messageSenderTask != null) + this.messageSenderTask.cancel(true); super.stop(); } @@ -275,8 +276,8 @@ public class DefaultPlcHandler extends StrolchComponent implements PlcHandler, P return; } - try (StrolchTransaction tx = openTx(validateCtx().getCertificate(), getCallerMethod(), false) - .silentThreshold(SILENT_THRESHOLD, MILLISECONDS)) { + try (StrolchTransaction tx = openTx(validateCtx().getCertificate(), getCallerMethod(), false).silentThreshold( + SILENT_THRESHOLD, MILLISECONDS)) { tx.lock(Resource.locatorFor(TYPE_PLC_ADDRESS, addressId)); Resource addressRes = tx.getResourceBy(TYPE_PLC_ADDRESS, addressId, true); @@ -305,8 +306,8 @@ public class DefaultPlcHandler extends StrolchComponent implements PlcHandler, P if (this.verbose) s = nanoTime(); - try (StrolchTransaction tx = openTx(validateCtx().getCertificate(), getCallerMethod(), false) - .silentThreshold(SILENT_THRESHOLD, MILLISECONDS)) { + try (StrolchTransaction tx = openTx(validateCtx().getCertificate(), getCallerMethod(), false).silentThreshold( + SILENT_THRESHOLD, MILLISECONDS)) { tx.lock(Resource.locatorFor(TYPE_PLC_CONNECTION, plcConnection.getId())); Resource connection = tx.getResourceBy(TYPE_PLC_CONNECTION, plcConnection.getId()); updateConnectionState(tx, connection, plcConnection); diff --git a/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java b/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java index 99230c2..46f6e4c 100644 --- a/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java +++ b/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java @@ -120,7 +120,8 @@ public class PlcGwClientHandler extends StrolchComponent implements GlobalPlcLis this.run = false; this.authenticated = false; - this.messageSenderTask.cancel(false); + if (this.messageSenderTask != null) + this.messageSenderTask.cancel(false); notifyPlcConnectionState(ConnectionState.Disconnected); @@ -212,8 +213,8 @@ public class PlcGwClientHandler extends StrolchComponent implements GlobalPlcLis // schedule the heart beat timer if (this.serverConnectFuture != null) this.serverConnectFuture.cancel(true); - this.serverConnectFuture = getScheduledExecutor("Server") - .scheduleWithFixedDelay(this::pingServer, PING_DELAY, PING_DELAY, TimeUnit.SECONDS); + this.serverConnectFuture = getScheduledExecutor("Server").scheduleWithFixedDelay(this::pingServer, PING_DELAY, + PING_DELAY, TimeUnit.SECONDS); } private void closeBrokenGwSessionUpdateState(String closeReason, String connectionStateMsg) {