You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/01/05 13:08:21 UTC
[camel] 02/02: CAMEL-17428: camel-jbang - Add -flight-recorder to startup JFR capturing
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 397e6c35d88fff1bcdd8d1a43c3c606e070599b2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jan 5 13:40:30 2022 +0100
CAMEL-17428: camel-jbang - Add -flight-recorder to startup JFR capturing
---
.../java/org/apache/camel/dsl/jbang/core/commands/Run.java | 14 +++++++++++---
.../src/main/java/org/apache/camel/main/KameletMain.java | 13 +++++++++++++
2 files changed, 24 insertions(+), 3 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 ae32a24..b63c431 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
@@ -79,9 +79,13 @@ class Run implements Callable<Integer> {
private boolean fileLock = true;
@Option(names = { "--jfr" },
- description = "Whether to start the jfr recorder or not")
+ description = "Enables Java Flight Recorder saving recording to disk on exit")
private boolean jfr;
+ @Option(names = { "--jfr-profile" },
+ description = "Java Flight Recorder profile to use (such as default or profile)")
+ private String jfrProfile;
+
@Option(names = { "--local-kamelet-dir" },
description = "Local directory to load Kamelets from (take precedence))")
private String localKameletDir;
@@ -147,8 +151,12 @@ class Run implements Callable<Integer> {
}
if (jfr) {
- main.addInitialProperty("camel.main.startup-recorder", "java-flight-recorder");
- main.addInitialProperty("camel.main.startupRecorderRecording", "true");
+ main.addInitialProperty("camel.jbang.jfr", "jfr");
+ }
+ if (jfrProfile != null) {
+ // turn on jfr if a profile was specified
+ main.addInitialProperty("camel.jbang.jfr", "jfr");
+ main.addInitialProperty("camel.jbang.jfr-profile", jfrProfile);
}
if (fileLock) {
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index 9ade32a..f20f4b5 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -25,6 +25,7 @@ import org.apache.camel.ProducerTemplate;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.spi.Registry;
+import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
/**
* A Main class for booting up Camel with Kamelet in standalone mode.
@@ -167,6 +168,18 @@ public class KameletMain extends MainCommandLineSupport {
VertxHttpServer.registerServer(answer, Integer.parseInt(port.toString()));
}
+ // need to setup jfr early
+ Object jfr = getInitialProperties().get("camel.jbang.jfr");
+ Object jfrProfile = getInitialProperties().get("camel.jbang.jfr-profile");
+ if ("jfr".equals(jfr) || jfrProfile != null) {
+ FlightRecorderStartupStepRecorder recorder = new FlightRecorderStartupStepRecorder();
+ recorder.setRecording(true);
+ if (jfrProfile != null) {
+ recorder.setRecordingProfile(jfrProfile.toString());
+ }
+ answer.setStartupStepRecorder(recorder);
+ }
+
if (download) {
try {
// use resolver that can auto downloaded