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