This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch feature/CAMEL-24328-jfr-tui-data in repository https://gitbox.apache.org/repos/asf/camel.git
commit b7c39bdb05a05cad9b22b7339cb2281dcf7d0d08 Author: Claus Ibsen <[email protected]> AuthorDate: Mon Aug 3 15:40:33 2026 +0200 CAMEL-24328: Add snapshot timestamp to JFR dev console and show age in TUI Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../org/apache/camel/runtime/jfr/CamelJfrDevConsole.java | 1 + .../apache/camel/dsl/jbang/core/commands/tui/JfrTab.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java b/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java index e2a270a2834c..5bf275d8a889 100644 --- a/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java +++ b/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java @@ -281,6 +281,7 @@ public class CamelJfrDevConsole extends AbstractDevConsole { JsonObject result = new JsonObject(); result.put("snapshot", true); + result.put("snapshotTimestamp", System.currentTimeMillis()); Path tempFile = null; try (Recording snapshot = FlightRecorder.getFlightRecorder().takeSnapshot()) { diff --git a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/JfrTab.java b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/JfrTab.java index 8102c0064e53..b6f4889b23a6 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/JfrTab.java +++ b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/JfrTab.java @@ -86,6 +86,7 @@ class JfrTab extends AbstractTab { private List<FailureEntry> failureData = List.of(); private List<RedeliveryEntry> redeliveryData = List.of(); private int snapshotEventCount; + private long snapshotTime; private boolean snapshotLoaded; // view state @@ -338,7 +339,16 @@ class JfrTab extends AbstractTab { if (snapshotLoaded) { line1.add(Span.styled(" snapshot: ", LABEL)); - line1.add(Span.styled(snapshotEventCount + " events", VALUE)); + String ageLabel = ""; + if (snapshotTime > 0) { + long agoSec = (System.currentTimeMillis() - snapshotTime) / 1000; + if (agoSec >= 60) { + ageLabel = " (" + (agoSec / 60) + "m ago)"; + } else if (agoSec >= 5) { + ageLabel = " (" + agoSec + "s ago)"; + } + } + line1.add(Span.styled(snapshotEventCount + " events" + ageLabel, VALUE)); } lines.add(Line.from(line1)); @@ -840,6 +850,8 @@ class JfrTab extends AbstractTab { errorMessage = null; message = null; + Long ts = jo.getLong("snapshotTimestamp"); + snapshotTime = ts != null ? ts : System.currentTimeMillis(); snapshotLoaded = true; tableState.select(0); });
