Made processing shutdown more aggressively

Affects issues:
- #1814
This commit is contained in:
Risto Lahtela 2021-03-25 08:00:04 +02:00
parent 4f39481549
commit a0029f1df8

View File

@ -152,28 +152,35 @@ public class Processing implements SubSystem {
} }
private void shutdownNonCriticalExecutor() { private void shutdownNonCriticalExecutor() {
nonCriticalExecutor.shutdown(); nonCriticalExecutor.shutdownNow();
} }
private void shutdownCriticalExecutor() { private void shutdownCriticalExecutor() {
List<Runnable> criticalTasks = criticalExecutor.shutdownNow(); criticalExecutor.shutdown();
logger.info(locale.get().getString(PluginLang.DISABLED_PROCESSING, criticalTasks.size())); try {
for (Runnable runnable : criticalTasks) { if (!criticalExecutor.awaitTermination(3, TimeUnit.SECONDS)) {
if (runnable == null) continue; List<Runnable> criticalTasks = criticalExecutor.shutdownNow();
try { logger.info(locale.get().getString(PluginLang.DISABLED_PROCESSING, criticalTasks.size()));
runnable.run(); for (Runnable runnable : criticalTasks) {
} catch (Exception | NoClassDefFoundError | NoSuchMethodError | NoSuchFieldError e) { if (runnable == null) continue;
errorLogger.warn(e, ErrorContext.builder().build()); try {
runnable.run();
} catch (Exception | NoClassDefFoundError | NoSuchMethodError | NoSuchFieldError e) {
errorLogger.warn(e, ErrorContext.builder().build());
}
}
} }
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} }
} }
private void ensureShutdown() { private void ensureShutdown() {
try { try {
if (!nonCriticalExecutor.isTerminated() && !nonCriticalExecutor.awaitTermination(1, TimeUnit.SECONDS)) { if (!nonCriticalExecutor.isTerminated()) {
nonCriticalExecutor.shutdownNow(); nonCriticalExecutor.shutdownNow();
} }
if (!criticalExecutor.isTerminated()) { if (!criticalExecutor.isTerminated() && !criticalExecutor.awaitTermination(1, TimeUnit.SECONDS)) {
criticalExecutor.shutdownNow(); criticalExecutor.shutdownNow();
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {