diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/Processing.java b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/Processing.java index 9f6c0ac2a..7592f8508 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/processing/Processing.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/processing/Processing.java @@ -145,15 +145,18 @@ public class Processing implements SubSystem { errorHandler.log(L.WARN, this.getClass(), e); } } - if (!nonCriticalExecutor.isTerminated()) { - try { - nonCriticalExecutor.awaitTermination(1, TimeUnit.SECONDS); - } catch (InterruptedException e) { + try { + if (!nonCriticalExecutor.isTerminated() && !nonCriticalExecutor.awaitTermination(1, TimeUnit.SECONDS)) { nonCriticalExecutor.shutdownNow(); } - } - if (!criticalExecutor.isTerminated()) { + if (!criticalExecutor.isTerminated()) { + criticalExecutor.shutdownNow(); + } + } catch (InterruptedException e) { + logger.error("Processing shutdown thread interrupted: " + e.getMessage()); + nonCriticalExecutor.shutdownNow(); criticalExecutor.shutdownNow(); + Thread.currentThread().interrupt(); } logger.info(locale.get().getString(PluginLang.DISABLED_PROCESSING_COMPLETE)); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java index a8dedc10d..1b96b28f3 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java @@ -258,9 +258,12 @@ public class WebServer implements SubSystem { ExecutorService service = (ExecutorService) executor; service.shutdown(); try { - service.awaitTermination(5, TimeUnit.SECONDS); - } catch (InterruptedException timeoutExceededEx) { - service.shutdownNow(); + if (!service.awaitTermination(5, TimeUnit.SECONDS)) { + service.shutdownNow(); + } + } catch (InterruptedException e) { + logger.error("WebServer ExecutorService shutdown thread interrupted on disable: " + e.getMessage()); + Thread.currentThread().interrupt(); } } }