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

Croway 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 e3b19286e85a [Camel Launcher] Fix state leaks (#26864)
e3b19286e85a is described below

commit e3b19286e85ae20f376baa7147b0a50629d20ae9
Author: Jakub Vrubel <[email protected]>
AuthorDate: Sat Sep 26 15:03:48 2026 +0200

    [Camel Launcher] Fix state leaks (#26864)
    
    * [Camel Launcher] Fix state leaks
    
    * Update 
dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
    
    Co-authored-by: Guillaume Nodet - AI Bot <[email protected]>
    
    * Update 
dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
    
    Co-authored-by: Guillaume Nodet - AI Bot <[email protected]>
    
    * Regen
    
    ---------
    
    Co-authored-by: Guillaume Nodet - AI Bot <[email protected]>
    Co-authored-by: Guillaume Nodet <[email protected]>
---
 .../apache/camel/dsl/jbang/it/CamelDebugITCase.java  |  2 ++
 .../org/apache/camel/dsl/jbang/it/JolokiaITCase.java | 20 +++++++++++++++++++-
 .../org/apache/camel/dsl/jbang/it/OpenApiITCase.java | 10 ++++++++++
 .../apache/camel/dsl/jbang/it/RunCommandITCase.java  | 18 +++++++++++-------
 .../camel/dsl/jbang/it/ValidatePluginITCase.java     | 10 ++++++++++
 .../camel/dsl/jbang/it/support/JBangTestSupport.java | 19 ++++++++++++++++++-
 6 files changed, 70 insertions(+), 9 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
index 910eded0830a..82eb38b5efa6 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
@@ -19,12 +19,14 @@ package org.apache.camel.dsl.jbang.it;
 import java.io.IOException;
 
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 
 import static org.junit.jupiter.api.condition.OS.WINDOWS;
 
 @DisabledOnOs(WINDOWS)
+@Tag("container-only")
 public class CamelDebugITCase extends JBangTestSupport {
     @Test
     public void testDebug() throws IOException {
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
index 1b348b7566ed..addfaec8e493 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
@@ -22,14 +22,32 @@ import java.time.Duration;
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
 import org.assertj.core.api.Assertions;
 import org.awaitility.Awaitility;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 
 import static org.junit.jupiter.api.condition.OS.WINDOWS;
 
 @DisabledOnOs(WINDOWS)
+@Tag("container-only")
 public class JolokiaITCase extends JBangTestSupport {
 
+    private String hawtioPid;
+
+    @AfterEach
+    public void stopJolokiaAndHawtio() {
+        try {
+            execute("jolokia FromDirectoryRoute --stop");
+        } catch (Exception | AssertionError e) {
+            logger.debug("failed to stop jolokia: {}", e.getMessage());
+        }
+        if (hawtioPid != null) {
+            execInContainer("kill " + hawtioPid + " 2>/dev/null || true");
+            hawtioPid = null;
+        }
+    }
+
     @Test
     public void testAttachJolokia() throws IOException {
         copyResourceInDataFolder(TestResources.DIR_ROUTE);
@@ -49,7 +67,7 @@ public class JolokiaITCase extends JBangTestSupport {
         copyResourceInDataFolder(TestResources.DIR_ROUTE);
         executeBackground(String.format("run %s/FromDirectoryRoute.java", 
mountPoint()));
         checkLogContains("(FromDirectoryRoute) started");
-        execNohup("hawtio FromDirectoryRoute");
+        hawtioPid = execNohup("hawtio FromDirectoryRoute");
         Awaitility.await()
                 .atMost(Duration.ofSeconds(30))
                 .pollInterval(Duration.ofSeconds(1))
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
index dd68bdd37511..326886a684b2 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
@@ -30,6 +30,7 @@ import java.util.Random;
 import org.apache.camel.dsl.jbang.it.support.InVersion;
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
 import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
@@ -37,6 +38,15 @@ import 
org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
 @Tag("container-only")
 public class OpenApiITCase extends JBangTestSupport {
 
+    @AfterEach
+    public void cleanupOpenApiArtifacts() {
+        try {
+            execute("plugin delete generate");
+        } catch (Exception | AssertionError e) {
+            logger.debug("failed to delete generate plugin: {}", 
e.getMessage());
+        }
+    }
+
     final HttpClient httpClient = HttpClient.newHttpClient();
 
     @Test
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
index 07a26e18aa5c..cda6a8f96d3c 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
@@ -83,13 +83,17 @@ public class RunCommandITCase extends JBangTestSupport {
     @Test
     @Tag("container-only")
     public void runRoutesFromMultipleFilesUsingWildcardTest() {
-        execute("init one.yaml --directory=/tmp/one");
-        execute("init two.xml --directory=/tmp/two");
-        copyInternallyToDataFolder("/tmp/one/one.yaml");
-        copyInternallyToDataFolder("/tmp/two/two.xml");
-        executeBackground(String.format("run %s/* ", mountPoint()));
-        checkLogContains(DEFAULT_MSG);
-        checkLogContains(DEFAULT_MSG);
+        try {
+            execute("init one.yaml --directory=/tmp/one");
+            execute("init two.xml --directory=/tmp/two");
+            copyInternallyToDataFolder("/tmp/one/one.yaml");
+            copyInternallyToDataFolder("/tmp/two/two.xml");
+            executeBackground(String.format("run %s/* ", mountPoint()));
+            checkLogContains(DEFAULT_MSG);
+            checkLogContains(DEFAULT_MSG);
+        } finally {
+            execInContainer("rm -rf /tmp/one /tmp/two");
+        }
     }
 
     @Test
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/ValidatePluginITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/ValidatePluginITCase.java
index c34392897fb4..42937194bf38 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/ValidatePluginITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/ValidatePluginITCase.java
@@ -19,10 +19,20 @@ package org.apache.camel.dsl.jbang.it;
 import java.io.IOException;
 
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
 class ValidatePluginITCase extends JBangTestSupport {
 
+    @AfterEach
+    void removeValidatePlugin() {
+        try {
+            execute("plugin delete validate");
+        } catch (Exception | AssertionError e) {
+            logger.debug("failed to delete validate plugin: {}", 
e.getMessage());
+        }
+    }
+
     @Test
     void testValidateOK() throws IOException {
         copyResourceInDataFolder(TestResources.ROUTE2);
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
index 9fbe7ef8eef4..f2ecdbdff5e5 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
@@ -107,9 +107,26 @@ public abstract class JBangTestSupport {
             // The JBang installation baseline is entirely hidden (.jbang/, 
.bashrc, .camel-jbang/).
             try {
                 execInContainer("find /home/jbang -maxdepth 1 -mindepth 1 -not 
-name '.*' -exec rm -rf {} +");
-            } catch (Exception e) {
+            } catch (Exception | AssertionError e) {
                 logger.debug("failed to clean up test files from /home/jbang: 
{}", e.getMessage());
             }
+            for (String key : new String[] { "runtime", "gav", "directory" }) {
+                try {
+                    execute("config unset " + key);
+                } catch (Exception | AssertionError e) {
+                    logger.debug("failed to unset config key {}: {}", key, 
e.getMessage());
+                }
+            }
+            try {
+                String forceRunVersion = 
System.getProperty(CliProperties.FORCE_RUN_VERSION, "");
+                if (!forceRunVersion.isEmpty()) {
+                    execute("version set " + forceRunVersion);
+                } else {
+                    execute("config unset camel-version");
+                }
+            } catch (Exception | AssertionError e) {
+                logger.debug("failed to reset camel-version: {}", 
e.getMessage());
+            }
             logger.debug("clean up data folder");
             if (containerDataFolder != null) {
                 FileUtil.removeDir(new File(containerDataFolder));

Reply via email to