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) {