conductor-oss/conductor · error · UnsupportedOperationException

Action not supported

Error message

Action not supported %s for event %s

What it means

SimpleActionProcessor.execute switches on action.getAction() and throws UnsupportedOperationException for any value that is not start_workflow, complete_task, fail_task, or start_agent. It signals a malformed or version-mismatched EventHandler.Action configuration: the action field on disk does not match any case the running build knows about.

Solutions

  1. Inspect the stored EventHandler definition for the event named in the message and check the `action` field.
  2. Set the action to one of the supported values: start_workflow, complete_task, fail_task, start_agent.
  3. After upgrading Conductor, re-register event handlers using the current schema/API.
  4. If you need a custom action, subclass/extend SimpleActionProcessor rather than sending an unknown enum.

Example fix

// before (event handler JSON)
{ "action": "start_wf" }

// after
{ "action": "start_workflow" }
Defensive patterns

Strategy: validation

Validate before calling

Set<Action.ActionType> supported = EnumSet.of(
    Action.ActionType.start_workflow,
    Action.ActionType.complete_task,
    Action.ActionType.fail_task,
    Action.ActionType.start_agent);
if (!supported.contains(action.getAction())) {
    throw new IllegalArgumentException("Unsupported action: " + action.getAction());
}

Try / catch

try {
    actionProcessor.execute(action, payload, event, messageId);
} catch (UnsupportedOperationException e) {
    LOGGER.error("Rejected event handler with unsupported action: {}", action.getAction());
    // do not re-queue; fix the definition
}

Prevention

When it happens

Trigger: An EventHandler is registered with an Action whose `action` enum is null or an unrecognized value (e.g. a new action type introduced in a newer Conductor version, or a typo/corruption in the stored JSON).

Common situations: Upgrading Conductor and reading an event-handler definition written by a different version; manually editing event-handler JSON and misspelling the action; a client SDK serializes an action constant the server does not recognize.

Related errors


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/0a2994afba2e5a62. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/com/netflix/conductor/core/events/SimpleActionProcessor.java:100

                        jsonObject,
                        action.getComplete_task(),
                        TaskModel.Status.COMPLETED,
                        event,
                        messageId);
            case fail_task:
                return completeTask(
                        action,
                        jsonObject,
                        action.getFail_task(),
                        TaskModel.Status.FAILED,
                        event,
                        messageId);
            case start_agent:
                return startAgent(action, jsonObject, event, messageId);
            default:
                break;
        }
        throw new UnsupportedOperationException(
                "Action not supported " + action.getAction() + " for event " + event);
    }

    private Map<String, Object> completeTask(
            Action action,
            Object payload,
            TaskDetails taskDetails,
            TaskModel.Status status,
            String event,
            String messageId) {

        Map<String, Object> input = new HashMap<>();
        input.put("workflowId", taskDetails.getWorkflowId());
        input.put("taskId", taskDetails.getTaskId());
        input.put("taskRefName", taskDetails.getTaskRefName());
        input.put("reasonForIncompletion", taskDetails.getReasonForIncompletion());
        input.putAll(taskDetails.getOutput());

View on GitHub (pinned to cf7c3e4a8a)