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 2021/08/04 11:11:28 UTC
[camel] branch main updated: CAMEL-16843: prevent an NPE when
stopping camel-kubernetes consumers (#5924)
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 48dd28b CAMEL-16843: prevent an NPE when stopping camel-kubernetes consumers (#5924)
48dd28b is described below
commit 48dd28b0d7b8723aed92761fe7645c7d4f8537e5
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Wed Aug 4 13:11:04 2021 +0200
CAMEL-16843: prevent an NPE when stopping camel-kubernetes consumers (#5924)
---
.../camel/component/kubernetes/KubernetesHelper.java | 14 +++++++++++++-
.../config_maps/KubernetesConfigMapsConsumer.java | 9 +++------
.../customresources/KubernetesCustomResourcesConsumer.java | 9 +++------
.../deployments/KubernetesDeploymentsConsumer.java | 9 +++------
.../component/kubernetes/hpa/KubernetesHPAConsumer.java | 9 +++------
.../namespaces/KubernetesNamespacesConsumer.java | 9 +++------
.../kubernetes/nodes/KubernetesNodesConsumer.java | 9 +++------
.../component/kubernetes/pods/KubernetesPodsConsumer.java | 9 +++------
.../KubernetesReplicationControllersConsumer.java | 9 +++------
.../kubernetes/services/KubernetesServicesConsumer.java | 9 +++------
10 files changed, 40 insertions(+), 55 deletions(-)
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesHelper.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesHelper.java
index ddea930..47754cd 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesHelper.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/KubernetesHelper.java
@@ -16,16 +16,19 @@
*/
package org.apache.camel.component.kubernetes;
+import java.util.function.Supplier;
+
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.Watch;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Helper moethods for Kubernetes resources.
+ * Helper methods for Kubernetes resources.
*/
public final class KubernetesHelper {
@@ -98,4 +101,13 @@ public final class KubernetesHelper {
return new DefaultKubernetesClient(conf);
}
+ public static void close(Runnable runnable, Supplier<Watch> watchGetter) {
+ if (runnable != null) {
+ final Watch watch = watchGetter.get();
+ if (watch != null) {
+ watch.close();
+ }
+ }
+ }
+
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/KubernetesConfigMapsConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/KubernetesConfigMapsConsumer.java
index 21b6e37..15e67b7 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/KubernetesConfigMapsConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/KubernetesConfigMapsConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Processor;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.ConfigMapEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesConfigMapsConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes ConfigMap Consumer");
if (executor != null) {
+ KubernetesHelper.close(configMapWatcher, configMapWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (configMapWatcher != null && configMapWatcher.getWatch() != null) {
- configMapWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (configMapWatcher != null && configMapWatcher.getWatch() != null) {
- configMapWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesConsumer.java
index 0e22f9b..a134ec9 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesConsumer.java
@@ -28,6 +28,7 @@ import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConfiguration;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
@@ -64,15 +65,11 @@ public class KubernetesCustomResourcesConsumer extends DefaultConsumer {
protected void doStop() throws Exception {
LOG.debug("Stopping Kubernetes Custom Resources Consumer");
if (executor != null) {
+ KubernetesHelper.close(customResourcesWatcher, customResourcesWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (customResourcesWatcher != null) {
- customResourcesWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (customResourcesWatcher != null) {
- customResourcesWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsConsumer.java
index 5eed4b8..fe05ed1 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.DeploymentEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesDeploymentsConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes Deployments Consumer");
if (executor != null) {
+ KubernetesHelper.close(deploymentsWatcher, deploymentsWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (deploymentsWatcher != null) {
- deploymentsWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (deploymentsWatcher != null) {
- deploymentsWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/hpa/KubernetesHPAConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/hpa/KubernetesHPAConsumer.java
index abf7d09..3b16f26 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/hpa/KubernetesHPAConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/hpa/KubernetesHPAConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.HPAEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesHPAConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes HPA Consumer");
if (executor != null) {
+ KubernetesHelper.close(hpasWatcher, hpasWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (hpasWatcher != null) {
- hpasWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (hpasWatcher != null) {
- hpasWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/namespaces/KubernetesNamespacesConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/namespaces/KubernetesNamespacesConsumer.java
index aa026f7..9571046 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/namespaces/KubernetesNamespacesConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/namespaces/KubernetesNamespacesConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.NamespaceEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesNamespacesConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes Namespace Consumer");
if (executor != null) {
+ KubernetesHelper.close(nsWatcher, nsWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (nsWatcher != null) {
- nsWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (nsWatcher != null) {
- nsWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/nodes/KubernetesNodesConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/nodes/KubernetesNodesConsumer.java
index 651eeee..5ce3993 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/nodes/KubernetesNodesConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/nodes/KubernetesNodesConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.NodeEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesNodesConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes Nodes Consumer");
if (executor != null) {
+ KubernetesHelper.close(nodesWatcher, nodesWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (nodesWatcher != null) {
- nodesWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (nodesWatcher != null) {
- nodesWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsConsumer.java
index 5f7b071..ade03c7 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.PodEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesPodsConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes Pods Consumer");
if (executor != null) {
+ KubernetesHelper.close(podsWatcher, podsWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (podsWatcher != null) {
- podsWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (podsWatcher != null) {
- podsWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersConsumer.java
index 8aec7d8..d2cb3c1 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.ReplicationControllerEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesReplicationControllersConsumer extends DefaultConsumer {
LOG.debug("Stopping Kubernetes Replication Controllers Consumer");
if (executor != null) {
+ KubernetesHelper.close(rcWatcher, rcWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (rcWatcher != null) {
- rcWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (rcWatcher != null) {
- rcWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/services/KubernetesServicesConsumer.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/services/KubernetesServicesConsumer.java
index 3b78fe8..8315151 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/services/KubernetesServicesConsumer.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/services/KubernetesServicesConsumer.java
@@ -29,6 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.kubernetes.AbstractKubernetesEndpoint;
import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesHelper;
import org.apache.camel.component.kubernetes.consumer.common.ServiceEvent;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.ObjectHelper;
@@ -68,15 +69,11 @@ public class KubernetesServicesConsumer extends DefaultConsumer {
super.doStop();
LOG.debug("Stopping Kubernetes Services Consumer");
if (executor != null) {
+ KubernetesHelper.close(servicesWatcher, servicesWatcher::getWatch);
+
if (getEndpoint() != null && getEndpoint().getCamelContext() != null) {
- if (servicesWatcher != null) {
- servicesWatcher.getWatch().close();
- }
getEndpoint().getCamelContext().getExecutorServiceManager().shutdownNow(executor);
} else {
- if (servicesWatcher != null) {
- servicesWatcher.getWatch().close();
- }
executor.shutdownNow();
}
}