diff --git a/core/src/main/java/com/netflix/conductor/core/reconciliation/WorkflowRepairService.java b/core/src/main/java/com/netflix/conductor/core/reconciliation/WorkflowRepairService.java index f24aa9b1f6..ad47595232 100644 --- a/core/src/main/java/com/netflix/conductor/core/reconciliation/WorkflowRepairService.java +++ b/core/src/main/java/com/netflix/conductor/core/reconciliation/WorkflowRepairService.java @@ -12,6 +12,7 @@ */ package com.netflix.conductor.core.reconciliation; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Predicate; @@ -24,6 +25,7 @@ import com.netflix.conductor.annotations.VisibleForTesting; import com.netflix.conductor.common.metadata.tasks.TaskType; import com.netflix.conductor.core.config.ConductorProperties; +import com.netflix.conductor.core.exception.NotFoundException; import com.netflix.conductor.core.execution.tasks.SystemTaskRegistry; import com.netflix.conductor.core.execution.tasks.WorkflowSystemTask; import com.netflix.conductor.core.utils.QueueUtils; @@ -101,7 +103,12 @@ public boolean verifyAndRepairWorkflow(String workflowId, boolean includeTasks) /** Verify and repair tasks in a workflow. */ public void verifyAndRepairWorkflowTasks(String workflowId) { - WorkflowModel workflow = executionDAO.getWorkflow(workflowId, true); + WorkflowModel workflow = + Optional.ofNullable(executionDAO.getWorkflow(workflowId, true)) + .orElseThrow( + () -> + new NotFoundException( + "Could not find workflow: " + workflowId)); workflow.getTasks().forEach(this::verifyAndRepairTask); // repair the parent workflow if needed verifyAndRepairWorkflow(workflow.getParentWorkflowId());