This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 20be06218d2 CAMEL-20297 camel-jbang: do not swallow interrupted exceptions (#12792) 20be06218d2 is described below commit 20be06218d26d5bbd6365af6b3857bc5d206e489 Author: Otavio Rodolfo Piske <orpi...@users.noreply.github.com> AuthorDate: Mon Jan 15 13:42:06 2024 +0100 CAMEL-20297 camel-jbang: do not swallow interrupted exceptions (#12792) Also consolidate duplicated interrupt-aware code. --- .../apache/camel/dsl/jbang/core/commands/Run.java | 2 +- .../dsl/jbang/core/commands/TransformRoute.java | 3 ++- .../core/commands/action/ActionBaseCommand.java | 24 +++++++++++++++++++++- .../core/commands/action/CamelRouteDumpAction.java | 21 +------------------ .../core/commands/action/CamelSendAction.java | 3 ++- .../core/commands/action/CamelSourceAction.java | 19 +---------------- .../jbang/core/commands/action/CamelSourceTop.java | 19 +---------------- .../action/CamelStartupRecorderAction.java | 19 +---------------- .../core/commands/action/CamelStubAction.java | 19 +---------------- .../core/commands/action/CamelThreadDump.java | 19 +---------------- .../commands/action/RouteControllerAction.java | 19 +---------------- .../commands/action/TransformMessageAction.java | 3 ++- .../dsl/jbang/core/commands/process/Hawtio.java | 5 ++++- .../camel/dsl/jbang/core/common/PluginHelper.java | 6 +++++- .../camel/main/download/DownloadThreadPool.java | 4 ++++ 15 files changed, 50 insertions(+), 135 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java index 9195808320c..cc44e9f87a0 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java @@ -1413,7 +1413,7 @@ public class Run extends CamelCommand { try { Thread.sleep(10); } catch (InterruptedException ex) { - // Ignore Exception + Thread.currentThread().interrupt(); } if (!f.delete()) { f.deleteOnExit(); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java index ea86ad862a5..35c522d5a8b 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java @@ -123,7 +123,8 @@ public class TransformRoute extends CamelCommand { IOHelper.close(fis); return text; } - + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); } catch (Exception e) { // ignore } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java index 0bdd8000fe3..6ea515545b9 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java @@ -27,6 +27,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.support.PatternHelper; import org.apache.camel.util.FileUtil; import org.apache.camel.util.IOHelper; +import org.apache.camel.util.StopWatch; import org.apache.camel.util.json.JsonObject; import org.apache.camel.util.json.Jsoner; @@ -36,6 +37,28 @@ abstract class ActionBaseCommand extends CamelCommand { super(main); } + protected static JsonObject getJsonObject(File outputFile) { + StopWatch watch = new StopWatch(); + while (watch.taken() < 5000) { + try { + // give time for response to be ready + Thread.sleep(100); + + if (outputFile.exists()) { + FileInputStream fis = new FileInputStream(outputFile); + String text = IOHelper.loadText(fis); + IOHelper.close(fis); + return (JsonObject) Jsoner.deserialize(text); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } catch (Exception e) { + // ignore + } + } + return null; + } + List<Long> findPids(String name) { List<Long> pids = new ArrayList<>(); @@ -91,5 +114,4 @@ abstract class ActionBaseCommand extends CamelCommand { } return null; } - } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java index 6126fc2f3c8..1d03f110d7b 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDumpAction.java @@ -17,7 +17,6 @@ package org.apache.camel.dsl.jbang.core.commands.action; import java.io.File; -import java.io.FileInputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -27,7 +26,6 @@ import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; import org.apache.camel.support.PatternHelper; import org.apache.camel.util.FileUtil; import org.apache.camel.util.IOHelper; -import org.apache.camel.util.StopWatch; import org.apache.camel.util.json.JsonArray; import org.apache.camel.util.json.JsonObject; import org.apache.camel.util.json.Jsoner; @@ -209,24 +207,7 @@ public class CamelRouteDumpAction extends ActionBaseCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } public static String extractSourceName(String loc) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java index f7861bb12e5..c5f786e4d52 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java @@ -261,7 +261,8 @@ public class CamelSendAction extends ActionBaseCommand { IOHelper.close(fis); return (JsonObject) Jsoner.deserialize(text); } - + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); } catch (Exception e) { // ignore } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceAction.java index c0a5ecd4798..ff11a4b3874 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceAction.java @@ -175,24 +175,7 @@ public class CamelSourceAction extends ActionBaseCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } public static String extractSourceName(String loc) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceTop.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceTop.java index 2daae441362..9e7678140cf 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceTop.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSourceTop.java @@ -169,24 +169,7 @@ public class CamelSourceTop extends ActionWatchCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } protected int sortRow(Row o1, Row o2) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStartupRecorderAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStartupRecorderAction.java index e64df4745e7..3db04dbd677 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStartupRecorderAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStartupRecorderAction.java @@ -151,24 +151,7 @@ public class CamelStartupRecorderAction extends ActionWatchCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } private static class Row { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStubAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStubAction.java index d5de8bc99c4..34ad8e58f89 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStubAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelStubAction.java @@ -345,24 +345,7 @@ public class CamelStubAction extends ActionWatchCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } private static class Row { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java index 55f2ead77d5..1b9b5b41cb2 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java @@ -213,24 +213,7 @@ public class CamelThreadDump extends ActionWatchCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } private String getBlocked(Row r) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java index 6429bf78191..05aeb37a711 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java @@ -253,24 +253,7 @@ public class RouteControllerAction extends ActionWatchCommand { } protected JsonObject waitForOutputFile(File outputFile) { - StopWatch watch = new StopWatch(); - while (watch.taken() < 5000) { - try { - // give time for response to be ready - Thread.sleep(100); - - if (outputFile.exists()) { - FileInputStream fis = new FileInputStream(outputFile); - String text = IOHelper.loadText(fis); - IOHelper.close(fis); - return (JsonObject) Jsoner.deserialize(text); - } - - } catch (Exception e) { - // ignore - } - } - return null; + return getJsonObject(outputFile); } protected String getSupervising(Row r) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java index 61ae678d27f..a4c0b4d0784 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java @@ -353,7 +353,8 @@ public class TransformMessageAction extends ActionWatchCommand { IOHelper.close(fis); return (JsonObject) Jsoner.deserialize(text); } - + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); } catch (Exception e) { // ignore } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java index 4dc156986c5..b7732a25e28 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java @@ -139,7 +139,10 @@ public class Hawtio extends CamelCommand { // keep JVM running installHangupInterceptor(); shutdownLatch.await(); - + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + System.err.println("Interrupted while launching Hawtio"); + return 1; } catch (Exception e) { System.err.println("Cannot launch Hawtio due to: " + e.getMessage()); return 1; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java index 3b5514ca5d5..303cbce1574 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java @@ -131,7 +131,11 @@ public final class PluginHelper { // wait for that process to exit as we run in foreground int exitCode = p.waitFor(); main.quit(exitCode); - } catch (IOException | InterruptedException e) { + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + main.getOut().printf("Interrupted while spawning JBang process"); + main.quit(1); + } catch (IOException e) { main.getOut().printf("Unable to spawn JBang process - %s%n", e.getMessage()); main.quit(1); } diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java index cf7dc6bf405..63c35747e25 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java @@ -76,6 +76,10 @@ class DownloadThreadPool extends ServiceSupport implements CamelContextAware { done = true; } catch (TimeoutException e) { // not done + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error("Interrupted while downloading: {}", e.getMessage(), e); + return; } catch (Exception e) { log.error("Error downloading: {} due to: {}", gav, e.getMessage(), e); return;