You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2024/01/15 12:42:16 UTC
(camel) branch main updated: CAMEL-20297 camel-jbang: do not swallow interrupted exceptions (#12792)
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 <or...@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;