From 958fe8c0cd886726c641e7b3af96769f7cdb6a7f Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Sat, 22 Aug 2026 23:39:21 +0200 Subject: Handle interrupted state in CompletionConsumer. Fixed ui Shutdown now calling now in case ui thread hangs --- src/main/java/com/it_jaros/jns/CliPrinter.java | 4 +++- src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/it_jaros') diff --git a/src/main/java/com/it_jaros/jns/CliPrinter.java b/src/main/java/com/it_jaros/jns/CliPrinter.java index fa2929d..e3ced2f 100644 --- a/src/main/java/com/it_jaros/jns/CliPrinter.java +++ b/src/main/java/com/it_jaros/jns/CliPrinter.java @@ -149,7 +149,9 @@ public class CliPrinter { public void stop() { ui.shutdown(); try { - ui.awaitTermination(1, TimeUnit.SECONDS); + if (!ui.awaitTermination(1, TimeUnit.SECONDS)) { + ui.shutdownNow(); + } } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } diff --git a/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java b/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java index 2dfedf5..252a246 100644 --- a/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java +++ b/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java @@ -26,7 +26,11 @@ public class CompletionConsumer { */ public void runConsumerLoop(Consumer> consumer) { while (!cancelledToken.isCancelled() && (state.running().get() || state.inPipeline().get() > 0)) { - consumer.accept(getPollResult()); + PollState pollResult = getPollResult(); + if (Thread.currentThread().isInterrupted()) { + break; + } + consumer.accept(pollResult); } } -- cgit v1.3.1