From ba04b2e69c61bb9482d81a35ef22535688bba654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= <a_meszaros@apple.com> Date: Sun, 9 Mar 2025 14:01:08 +0100 Subject: [PATCH 1/5] improve: logging on resource delete condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros <a_meszaros@apple.com> --- .../workflow/KubernetesResourceDeletedCondition.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java index 4137ac9519..0dbb28ea9a 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java @@ -1,5 +1,8 @@ package io.javaoperatorsdk.operator.processing.dependent.workflow; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; @@ -14,6 +17,9 @@ */ public class KubernetesResourceDeletedCondition implements Condition<HasMetadata, HasMetadata> { + private static final Logger logger = + LoggerFactory.getLogger(KubernetesResourceDeletedCondition.class); + @Override public boolean isMet( DependentResource<HasMetadata, HasMetadata> dependentResource, @@ -21,6 +27,11 @@ public boolean isMet( Context<HasMetadata> context) { var optionalResource = dependentResource.getSecondaryResource(primary, context); if (optionalResource.isEmpty()) { + logger.debug( + "Resource not found in cache, considering it deleted. " + + "Dependent resource name: {}, primary resource name: {}", + dependentResource.name(), + primary.getMetadata().getName()); return true; } else { return optionalResource.orElseThrow().getMetadata().getFinalizers().isEmpty(); From 1649e287f3747d67f8f179f1fc798aeb41e8a3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= <a_meszaros@apple.com> Date: Sun, 9 Mar 2025 14:04:01 +0100 Subject: [PATCH 2/5] wip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros <a_meszaros@apple.com> --- .../KubernetesResourceDeletedCondition.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java index 0dbb28ea9a..721e96bde7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java @@ -27,14 +27,24 @@ public boolean isMet( Context<HasMetadata> context) { var optionalResource = dependentResource.getSecondaryResource(primary, context); if (optionalResource.isEmpty()) { - logger.debug( - "Resource not found in cache, considering it deleted. " - + "Dependent resource name: {}, primary resource name: {}", - dependentResource.name(), - primary.getMetadata().getName()); + if (logger.isDebugEnabled()) { + logger.debug( + "Resource not found in cache, considering it deleted. " + + "Dependent resource name: {}, primary resource name: {}", + dependentResource.name(), + primary.getMetadata().getName()); + } return true; } else { - return optionalResource.orElseThrow().getMetadata().getFinalizers().isEmpty(); + var finalizers = optionalResource.orElseThrow().getMetadata().getFinalizers(); + if (logger.isDebugEnabled()) { + logger.debug( + "finalizers: {}, dependent resource name: {}, primary resource name: {}\"", + finalizers, + dependentResource.name(), + primary.getMetadata().getName()); + } + return finalizers.isEmpty(); } } } From 7d2a5bf41825d9b50676d63b076af6e154fbaef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= <a_meszaros@apple.com> Date: Sun, 9 Mar 2025 14:17:49 +0100 Subject: [PATCH 3/5] wip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros <a_meszaros@apple.com> --- .../KubernetesResourceDeletedCondition.java | 33 ++----------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java index 721e96bde7..d53ac3f7a6 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java @@ -7,18 +7,8 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; -/** - * A condition implementation meant to be used as a delete post-condition on Kubernetes dependent - * resources to prevent the workflow from proceeding until the associated resource is actually - * deleted from the server (or, at least, doesn't have any finalizers anymore). This is needed in - * cases where a cleaning process depends on resources being actually removed from the server - * because, by default, workflows simply request the deletion but do NOT wait for the resources to - * be actually deleted. - */ -public class KubernetesResourceDeletedCondition implements Condition<HasMetadata, HasMetadata> { - private static final Logger logger = - LoggerFactory.getLogger(KubernetesResourceDeletedCondition.class); +public class KubernetesResourceDeletedCondition implements Condition<HasMetadata, HasMetadata> { @Override public boolean isMet( @@ -26,25 +16,6 @@ public boolean isMet( HasMetadata primary, Context<HasMetadata> context) { var optionalResource = dependentResource.getSecondaryResource(primary, context); - if (optionalResource.isEmpty()) { - if (logger.isDebugEnabled()) { - logger.debug( - "Resource not found in cache, considering it deleted. " - + "Dependent resource name: {}, primary resource name: {}", - dependentResource.name(), - primary.getMetadata().getName()); - } - return true; - } else { - var finalizers = optionalResource.orElseThrow().getMetadata().getFinalizers(); - if (logger.isDebugEnabled()) { - logger.debug( - "finalizers: {}, dependent resource name: {}, primary resource name: {}\"", - finalizers, - dependentResource.name(), - primary.getMetadata().getName()); - } - return finalizers.isEmpty(); - } + return optionalResource.isEmpty(); } } From bcdfc7eecd358c5d3ed8cf7de5bb483adb8a4fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= <a_meszaros@apple.com> Date: Sun, 9 Mar 2025 14:19:20 +0100 Subject: [PATCH 4/5] format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros <a_meszaros@apple.com> --- .../workflow/KubernetesResourceDeletedCondition.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java index d53ac3f7a6..cdc7d5e3fe 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java @@ -1,13 +1,9 @@ package io.javaoperatorsdk.operator.processing.dependent.workflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; - public class KubernetesResourceDeletedCondition implements Condition<HasMetadata, HasMetadata> { @Override From 76819d57ad8a5094282c621872e3c79fe9b9e9b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= <a_meszaros@apple.com> Date: Mon, 10 Mar 2025 16:15:22 +0100 Subject: [PATCH 5/5] Add docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros <a_meszaros@apple.com> --- .../workflow/KubernetesResourceDeletedCondition.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java index cdc7d5e3fe..3cf464d46b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/KubernetesResourceDeletedCondition.java @@ -4,6 +4,10 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; +/* A condition implementation meant to be used as a delete post-condition on Kubernetes dependent + * resources to prevent the workflow from proceeding until the associated resource is actually + * deleted from the server. + */ public class KubernetesResourceDeletedCondition implements Condition<HasMetadata, HasMetadata> { @Override