conductor-oss/conductor · error · UnsupportedOperationException

Action not supported %s for event %s

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.

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)

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.