diff options
| author | 2026-08-22 23:39:21 +0200 | |
|---|---|---|
| committer | 2026-08-22 23:39:21 +0200 | |
| commit | 958fe8c0cd886726c641e7b3af96769f7cdb6a7f (patch) | |
| tree | b7dc2f391c774348cc6fa290e8de7dedec4623db | |
| parent | 56644a0982100f4622dde71bc12bd3228517e466 (diff) | |
Handle interrupted state in CompletionConsumer. Fixed ui Shutdown now
calling now in case ui thread hangs
| -rw-r--r-- | src/main/java/com/it_jaros/jns/CliPrinter.java | 4 | ||||
| -rw-r--r-- | src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java | 6 |
2 files changed, 8 insertions, 2 deletions
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<T> { */ public void runConsumerLoop(Consumer<PollState<T>> consumer) { while (!cancelledToken.isCancelled() && (state.running().get() || state.inPipeline().get() > 0)) { - consumer.accept(getPollResult()); + PollState<T> pollResult = getPollResult(); + if (Thread.currentThread().isInterrupted()) { + break; + } + consumer.accept(pollResult); } } |
