conductor-oss/conductor · warning · IllegalStateException
WorkflowRepairService is disabled.
Error message
WorkflowRepairService is disabled.
What it means
Thrown by AdminServiceImpl.verifyAndRepairWorkflowConsistency when the WorkflowRepairService Spring bean is not present in the application context (injected as Optional and resolved to null). The repair service is an optional component that reconciles inconsistent workflow states. When it's not registered, the admin repair API endpoint cannot function.
Source
Thrown at core/src/main/java/com/netflix/conductor/service/AdminServiceImpl.java:105
* @param taskType Name of the task
* @param start Start index of pagination
* @param count Number of entries
* @return list of pending {@link Task}
*/
public List<Task> getListOfPendingTask(String taskType, Integer start, Integer count) {
List<Task> tasks = executionService.getPendingTasksForTaskType(taskType);
int total = start + count;
total = Math.min(tasks.size(), total);
if (start > tasks.size()) {
start = tasks.size();
}
return tasks.subList(start, total);
}
@Override
public boolean verifyAndRepairWorkflowConsistency(String workflowId) {
if (workflowRepairService == null) {
throw new IllegalStateException(
WorkflowRepairService.class.getSimpleName() + " is disabled.");
}
return workflowRepairService.verifyAndRepairWorkflow(workflowId, true);
}
/**
* Queue up the workflow for sweep.
*
* @param workflowId Id of the workflow
* @return the id of the workflow instance that can be use for tracking.
*/
public String requeueSweep(String workflowId) {
boolean pushed =
queueDAO.pushIfNotExists(
Utils.DECIDER_QUEUE,
workflowId,
properties.getWorkflowOffsetTimeout().getSeconds());
return pushed + "." + workflowId;View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Ensure the module providing WorkflowRepairService is on the classpath (typically the core or server module's reconciliation package).
- Check if there is a property that enables/disables the repair service (e.g. conductor.app.repairServiceEnabled or similar) and set it to true.
- If the repair service is intentionally not deployed, stop calling the repair API endpoint from your tooling.
- Rebuild the server with the full server profile that includes all reconciliation beans.
Example fix
# before — repair service not loaded, API call fails curl -X POST http://localhost:8080/api/admin/workflow/wf-123/repair # 500: WorkflowRepairService is disabled. # after — enable in application.properties # conductor.app.repairServiceEnabled=true (check exact property name) # or ensure the reconciliation module is in the build dependencies
Defensive patterns
Strategy: type-guard
Validate before calling
// Check if repair service is available before calling the API
public boolean isRepairServiceAvailable(AdminService adminService) {
// The service throws if null — probe safely
try {
adminService.verifyAndRepairWorkflowConsistency("__probe__");
return true;
} catch (IllegalStateException e) {
return false;
}
} Try / catch
try {
adminService.verifyAndRepairWorkflowConsistency(workflowId);
} catch (IllegalStateException e) {
if (e.getMessage().contains("disabled")) {
// Repair service not deployed — inform user or skip
LOGGER.warn("WorkflowRepairService is not available in this deployment");
return false;
}
throw e;
} Prevention
- Ensure the reconciliation module providing WorkflowRepairService is in the server build if repair is needed.
- Check the feature flag / property that controls repair service loading.
- Add a health endpoint that reports which optional services are active.
When it happens
Trigger: Calling the admin API endpoint for workflow repair (POST /api/admin/workflow/{workflowId}/repair or similar) when the WorkflowRepairService bean is not on the classpath or not auto-configured. The bean is injected via Optional<WorkflowRepairService>, so its absence doesn't fail startup.
Common situations: Running a minimal Conductor server profile that excludes the reconciliation/sweeper module. The WorkflowRepairService is conditionally loaded (e.g. disabled by a feature flag or property) but an operator or external tool still calls the repair API. Custom server build that omitted the reconciliation module dependency.
Related errors
- Event processing is DISABLED
- Skill registry is not available
- llmProvider not specified: {name}
- no configuration found for: {name}
- Bad/Unsupported schema? : {validationMessages}
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/182a4e8c055f6ec3.
Report an issue: GitHub.