conductor-oss/conductor · error · IllegalStateException

Error loading queue: %s, for task: %s, error: %s

Error message

Error loading queue: %s, for task: %s, error: %s

What it means

Thrown by Event.getQueue() when eventQueues.getQueue() throws an IllegalArgumentException. This happens when the queue name (derived from the sink) does not have a registered provider — the EventQueues.getQueue() method splits on ':' and looks up the prefix in the providers map. An unknown prefix type or a missing ':' delimiter triggers this. The error message includes the queueName, taskId, and the original exception message.

Source

Thrown at core/src/main/java/com/netflix/conductor/core/execution/tasks/Event.java:160

                queueName =
                        "conductor:"
                                + workflow.getWorkflowName()
                                + ":"
                                + sinkValue.replaceAll("conductor:", "");
            } else {
                throw new IllegalStateException(
                        "Invalid / Unsupported sink specified: " + sinkValue);
            }
        }
        return queueName;
    }

    @VisibleForTesting
    ObservableQueue getQueue(String queueName, String taskId) {
        try {
            return eventQueues.getQueue(queueName);
        } catch (IllegalArgumentException e) {
            throw new IllegalStateException(
                    "Error loading queue:"
                            + queueName
                            + ", for task:"
                            + taskId
                            + ", error: "
                            + e.getMessage());
        } catch (Exception e) {
            throw new NonTransientException("Unable to find queue name for task " + taskId);
        }
    }

    Message getPopulatedMessage(TaskModel task) throws JsonProcessingException {
        String payloadJson = objectMapper.writeValueAsString(task.getOutputData());
        return new Message(task.getTaskId(), payloadJson, task.getTaskId());
    }
}

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Ensure the event queue provider for your sink prefix is registered — include the appropriate Conductor module (e.g., conductor-aws-sqs-queue).
  2. Use a supported sink prefix that matches a deployed provider (check available providers via EventQueues.getProviders()).
  3. Fix the sink format to include a colon separator: 'sqs:myQueue', not 'sqsmqQueue'.
  4. If using 'conductor:' internal queues, no external provider is needed — verify the sink starts with 'conductor:'.

Example fix

// before — no SQS provider deployed
"inputParameters": {
  "sink": "sqs:my-queue"
}

// after — use internal conductor queue
"inputParameters": {
  "sink": "conductor:my-queue"
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify the queue provider is registered before execution
String providerType = queueName.substring(0, queueName.indexOf(':'));
if (!eventQueues.getProviders().stream().anyMatch(p -> p.contains(providerType))) {
    throw new IllegalStateException("No event queue provider for: " + providerType);
}

Try / catch

try {
    ObservableQueue queue = eventQueues.getQueue(queueName);
} catch (IllegalArgumentException e) {
    throw new IllegalStateException(
        "Queue provider not found for: " + queueName + " — " + e.getMessage());
}

Prevention

When it happens

Trigger: An EVENT task sink uses a queue provider prefix that is not registered (e.g., 'kafka:' when no Kafka event queue provider is configured). The sink value lacks a ':' separator so EventQueues cannot extract the provider type. The queue name is empty after the prefix.

Common situations: Server deployed without the SQS/AMQP/Kafka event queue module but workflow uses that sink type. Misconfigured sink value with no colon. A sink prefix typo like 'sq:' instead of 'sqs:'.

Related errors


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