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


The following commit(s) were added to refs/heads/main by this push:
     new b3797fc19a2 CAMEL-21621: camel-jbang - k8s-httpclient-vertx fails in 
shutdown hook (#16806)
b3797fc19a2 is described below

commit b3797fc19a260c9ec8cc292fd3b2a6f254b5030a
Author: Thomas Diesler <[email protected]>
AuthorDate: Wed Jan 15 10:18:48 2025 +0100

    CAMEL-21621: camel-jbang - k8s-httpclient-vertx fails in shutdown hook 
(#16806)
---
 dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml |  5 +++++
 .../core/commands/kubernetes/KubernetesHelper.java    | 19 +++++++++++++++++++
 .../jbang/core/commands/kubernetes/KubernetesRun.java | 12 ++++++------
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml
index 33117ab8e6f..84cefc7ef52 100644
--- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml
@@ -53,6 +53,11 @@
             <artifactId>kubernetes-client</artifactId>
             <version>${kubernetes-client-version}</version>
         </dependency>
+        <dependency>
+            <groupId>io.fabric8</groupId>
+            <artifactId>kubernetes-httpclient-vertx</artifactId>
+            <version>${kubernetes-client-version}</version>
+        </dependency>
 
         <!-- OpenShift -->
         <dependency>
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
index 63ede150504..c0983a9419a 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java
@@ -34,6 +34,10 @@ import com.fasterxml.jackson.databind.json.JsonMapper;
 import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.kubernetes.client.KubernetesClientBuilder;
+import io.fabric8.kubernetes.client.vertx.VertxHttpClientFactory;
+import io.vertx.core.Vertx;
+import io.vertx.core.VertxOptions;
+import io.vertx.core.file.FileSystemOptions;
 import org.apache.camel.dsl.jbang.core.commands.CommandHelper;
 import org.apache.camel.dsl.jbang.core.common.YamlHelper;
 import org.apache.camel.util.FileUtil;
@@ -150,6 +154,21 @@ public final class KubernetesHelper {
         KubernetesHelper.kubernetesClient = kubernetesClient;
     }
 
+    // KubernetesClientVertx can no longer be used in ShutdownHook
+    // https://issues.apache.org/jira/browse/CAMEL-21621
+    public static KubernetesClient createKubernetesClientForShutdownHook() {
+        System.setProperty("vertx.disableDnsResolver", "true");
+        var vertx = Vertx.vertx((new VertxOptions())
+                .setFileSystemOptions((new FileSystemOptions())
+                        .setFileCachingEnabled(false)
+                        .setClassPathResolvingEnabled(false))
+                .setUseDaemonThread(true));
+        var client = new KubernetesClientBuilder()
+                .withHttpClientFactory(new VertxHttpClientFactory(vertx))
+                .build();
+        return client;
+    }
+
     /**
      * Dump given domain model object as YAML. Uses Json conversion to generic 
map as intermediate step. This makes sure
      * to properly write Json additional properties.
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
index 0d25eb43822..bb8a1768860 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
@@ -501,13 +501,13 @@ public class KubernetesRun extends KubernetesBaseCommand {
     }
 
     private void installShutdownHook(String projectName, String workingDir) {
-        KubernetesDelete deleteCommand = new KubernetesDelete(getMain());
-        deleteCommand.clusterType = clusterType;
-        deleteCommand.workingDir = workingDir;
-        deleteCommand.name = projectName;
-
         devModeShutdownTask = new Thread(() -> {
-            try {
+            KubernetesDelete deleteCommand = new KubernetesDelete(getMain());
+            deleteCommand.clusterType = clusterType;
+            deleteCommand.workingDir = workingDir;
+            deleteCommand.name = projectName;
+            try (var client = 
KubernetesHelper.createKubernetesClientForShutdownHook()) {
+                KubernetesHelper.setKubernetesClient(client);
                 deleteCommand.doCall();
                 CommandHelper.cleanExportDir(deleteCommand.workingDir, false);
             } catch (Exception e) {

Reply via email to