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 <orpi...@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(); } }