diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java index c9107a4266..0eb176f3aa 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java @@ -22,7 +22,7 @@ public class WorkflowBuilder
{ public WorkflowBuilder
addDependentResource(DependentResource dependentResource) {
currentNode = new DependentResourceNode<>(dependentResource);
- isCleaner = dependentResource.isDeletable();
+ isCleaner = isCleaner || dependentResource.isDeletable();
final var name = currentNode.getName();
dependentResourceNodes.put(name, currentNode);
return this;
diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java
index 467820940d..e8b26184c4 100644
--- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java
+++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutorTest.java
@@ -22,6 +22,7 @@ public class AbstractWorkflowExecutorTest {
protected TestDeleterDependent drDeleter = new TestDeleterDependent("DR_DELETER");
protected TestErrorDependent drError = new TestErrorDependent("ERROR_1");
protected TestErrorDeleterDependent errorDD = new TestErrorDeleterDependent("ERROR_DELETER");
+ protected GarbageCollectedDeleter gcDeleter = new GarbageCollectedDeleter("GC_DELETER");
@SuppressWarnings("rawtypes")
protected final Condition noMetDeletePostCondition = (primary, secondary, context) -> false;
diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilderTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilderTest.java
new file mode 100644
index 0000000000..9a61931a61
--- /dev/null
+++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilderTest.java
@@ -0,0 +1,27 @@
+package io.javaoperatorsdk.operator.processing.dependent.workflow;
+
+import org.junit.jupiter.api.Test;
+
+import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
+import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.*;
+
+class WorkflowBuilderTest {
+
+ @Test
+ void workflowIsCleanerIfAtLeastOneDRIsCleaner() {
+ var dr = mock(DependentResource.class);
+ var deleter = mock(DependentResource.class);
+ when(deleter.isDeletable()).thenReturn(true);
+
+ var workflow = new WorkflowBuilder