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

davsclaus 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 f188ef16308c CAMEL-23385: Fix watch mode exit and terminal resource 
leak (#23130)
f188ef16308c is described below

commit f188ef16308c7a72535d01f2d554d56b9f322477
Author: Guillaume Nodet <[email protected]>
AuthorDate: Tue May 12 08:12:46 2026 +0200

    CAMEL-23385: Fix watch mode exit and terminal resource leak (#23130)
    
    - Remove shadowed local variable in ActionWatchCommand.doCall() that
      prevented the watch loop from exiting when the user presses Enter
    - Set running flag to false in CamelRouteDiagramAction.waitForUserEnter()
      after lineReader.readLine() returns
    - Close terminal in finally block to prevent resource leak
    
    Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
---
 .../camel/dsl/jbang/core/commands/action/ActionWatchCommand.java | 1 -
 .../dsl/jbang/core/commands/action/CamelRouteDiagramAction.java  | 9 ++++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionWatchCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionWatchCommand.java
index 5bc634eed4dd..777880a349f9 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionWatchCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionWatchCommand.java
@@ -41,7 +41,6 @@ abstract class ActionWatchCommand extends ActionBaseCommand {
     @Override
     public Integer doCall() throws Exception {
         int exit;
-        final AtomicBoolean running = new AtomicBoolean(true);
         if (watch) {
             Thread t = new Thread(() -> {
                 waitUserTask = waitForUserEnter();
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDiagramAction.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDiagramAction.java
index d79fdc876a10..165b53b1cd7e 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDiagramAction.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteDiagramAction.java
@@ -129,7 +129,13 @@ public class CamelRouteDiagramAction extends 
ActionWatchCommand {
             lineReader = 
LineReaderBuilder.builder().terminal(terminal).build();
         }
 
-        return super.doCall();
+        try {
+            return super.doCall();
+        } finally {
+            if (terminal != null) {
+                terminal.close();
+            }
+        }
     }
 
     @Override
@@ -248,6 +254,7 @@ public class CamelRouteDiagramAction extends 
ActionWatchCommand {
                     // ignore
                 }
             }
+            running.set(false);
         };
     }
 

Reply via email to