diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java index bc2d3f9eec..a31c7f4fbf 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java @@ -41,6 +41,7 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.DefaultManagedDependentResourceContext; import io.javaoperatorsdk.operator.health.ControllerHealthInfo; import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow; +import io.javaoperatorsdk.operator.processing.dependent.workflow.WorkflowBuilder; import io.javaoperatorsdk.operator.processing.dependent.workflow.WorkflowCleanupResult; import io.javaoperatorsdk.operator.processing.event.EventProcessor; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; @@ -93,7 +94,11 @@ public Controller(Reconciler
reconciler, isCleaner = reconciler instanceof Cleaner; final var managed = configurationService.getWorkflowFactory().workflowFor(configuration); - managedWorkflow = managed.resolve(kubernetesClient, configuration); + // wrap original wrapper so that we can properly set the result in case it's throwing an + // exception + final Workflow workflow = managed.resolve(kubernetesClient, configuration); + managedWorkflow = WorkflowBuilder.from(workflow) + .withThrowExceptionFurther(false).build(); eventSourceManager = new EventSourceManager<>(this); eventProcessor = new EventProcessor<>(eventSourceManager, configurationService); 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 d65e21659c..8e92fababc 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 @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; @@ -14,11 +15,21 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public class WorkflowBuilder
{
- private final Map addDependentResource(DependentResource dependentResource) {
return addDependentResource(dependentResource, null);
@@ -91,4 +102,12 @@ public Workflow build() {
return new DefaultWorkflow(new HashSet<>(dependentResourceNodes.values()),
throwExceptionAutomatically, isCleaner);
}
+
+ public static WorkflowBuilder from(Workflow workflow) {
+ final Map