diff --git a/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/EventUtils.java b/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/EventUtils.java index ef32cd5915..261068c72b 100644 --- a/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/EventUtils.java +++ b/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/EventUtils.java @@ -23,6 +23,8 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.ObjectReferenceBuilder; import io.fabric8.kubernetes.client.KubernetesClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.annotation.Nullable; @@ -37,6 +39,7 @@ * https://github.com/EnMasseProject/enmasse/blob/master/k8s-api/src/main/java/io/enmasse/k8s/api/KubeEventLogger.java */ public class EventUtils { + private static final Logger LOG = LoggerFactory.getLogger(EventUtils.class); public static String generateEventName( HasMetadata target, @@ -125,6 +128,11 @@ public static boolean createOrUpdateEventWithLabels( @Nullable Duration interval, @Nullable Predicate> dedupePredicate, @Nullable Map labels) { + var namespace = target.getMetadata().getNamespace(); + if (isNamespaceMarkedForDeletion(client, namespace)) { + LOG.info("Ignoring event because namespace is marked for deletion"); + return true; + } String eventName = generateEventName( target, type, reason, messageKey != null ? messageKey : message, component); @@ -213,4 +221,13 @@ private static boolean labelCheck( || (existing.getMetadata() != null && dedupePredicate.test(existing.getMetadata().getLabels())); } + + private static boolean isNamespaceMarkedForDeletion(KubernetesClient client, String namespace) { + try { + return client.namespaces().withName(namespace).get().isMarkedForDeletion(); + } catch (Exception e) { + LOG.warn("Error while checking namespace status", e); + return false; + } + } } diff --git a/helm/flink-kubernetes-operator/templates/rbac.yaml b/helm/flink-kubernetes-operator/templates/rbac.yaml index 4d8bb7ff42..18a6ca9a4e 100644 --- a/helm/flink-kubernetes-operator/templates/rbac.yaml +++ b/helm/flink-kubernetes-operator/templates/rbac.yaml @@ -29,6 +29,7 @@ rules: - events - configmaps - secrets + - namespaces verbs: - "*" {{- if .Values.rbac.nodesRule.create }}