You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2026/07/11 08:43:36 UTC

(camel) 01/01: CAMEL-24003: Wire activity data into CLI connector

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch feature/CAMEL-24003-cli-activity-connector
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6fbc4f365791b78cc12692aaa9017c6b716de543
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jul 11 10:43:21 2026 +0200

    CAMEL-24003: Wire activity data into CLI connector
    
    LocalCliConnector now writes {pid}-activity.json with completed
    exchange summaries from the BacklogTracer activity queue.
    ActivityDevConsole changed to use read-only getActivity() instead
    of dumpActivity() so the queue is not cleared on each poll.
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
    Signed-off-by: Claus Ibsen <cl...@gmail.com>
---
 .../apache/camel/impl/console/ActivityDevConsole.java |  2 +-
 .../apache/camel/cli/connector/LocalCliConnector.java | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
index 28fb5dbec054..6e9c211dc200 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ActivityDevConsole.java
@@ -62,7 +62,7 @@ public class ActivityDevConsole extends AbstractDevConsole {
 
             JsonArray arr = new JsonArray();
             root.put("activity", arr);
-            for (BacklogTracerEventMessage event : tracer.dumpActivity()) {
+            for (BacklogTracerEventMessage event : tracer.getActivity()) {
                 JsonObject jo = new JsonObject();
                 jo.put("uid", event.getUid());
                 jo.put("exchangeId", event.getExchangeId());
diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index b06303fceb46..4e8123d0d767 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -130,6 +130,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
     private File errorFile;
     private File receiveFile;
     private long receiveFilePos; // keep track of receive offset
+    private File activityFile;
     private byte[] lastSource;
     private ExpressionDefinition lastSourceExpression;
 
@@ -202,6 +203,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             errorFile = createLockFile(lockFile.getName() + "-error.json");
             debugFile = createLockFile(lockFile.getName() + "-debug.json");
             receiveFile = createLockFile(lockFile.getName() + "-receive.json");
+            activityFile = createLockFile(lockFile.getName() + "-activity.json");
             scheduledFuture = executor.scheduleWithFixedDelay(this::task, 0, delay, TimeUnit.MILLISECONDS);
             LOG.info("Camel CLI connector enabled");
         } else {
@@ -1693,6 +1695,20 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             LOG.trace("Error updating receive file: {} due to: {}. This exception is ignored.",
                     receiveFile, e.getMessage(), e);
         }
+        try {
+            DevConsole dc15 = camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class)
+                    .resolveById("activity");
+            if (dc15 != null) {
+                JsonObject json = (JsonObject) dc15.call(DevConsole.MediaType.JSON);
+                LOG.trace("Updating activity file: {}", activityFile);
+                String data = json.toJson() + System.lineSeparator();
+                IOHelper.writeText(data, activityFile);
+            }
+        } catch (Exception e) {
+            // ignore
+            LOG.trace("Error updating activity file: {} due to: {}. This exception is ignored.",
+                    activityFile, e.getMessage(), e);
+        }
     }
 
     private JsonObject collectMemory() {
@@ -1853,6 +1869,9 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
         if (receiveFile != null) {
             FileUtil.deleteFile(receiveFile);
         }
+        if (activityFile != null) {
+            FileUtil.deleteFile(activityFile);
+        }
         if (executor != null) {
             camelContext.getExecutorServiceManager().shutdown(executor);
             executor = null;