conductor-oss/conductor · error · NonTransientException

Unable to find queue name for task %s

Error message

Unable to find queue name for task %s

What it means

Thrown by Event.getQueue() as a catch-all when eventQueues.getQueue() throws any exception other than IllegalArgumentException. Unlike the more specific IllegalStateException (error 436), this wraps unexpected failures (NPE, IOException, connection errors to the queue backend) into a NonTransientException. The message does not include the original exception — only the taskId. NonTransientException means retrying the same task will produce the same failure.

Source

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

            }
        }
        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. Check the server log for the original exception — the catch block does not include it in the message, so look in logs.
  2. Verify the event queue backend connectivity (SQS endpoint, AMQP broker URL, credentials).
  3. Ensure the event queue provider is correctly configured in application properties.
  4. If the provider has a transient connectivity issue, the NonTransientException classification may be too aggressive — consider restarting the provider connection.
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify queue backend connectivity before task execution
try {
    ObservableQueue queue = eventQueues.getQueue(queueName);
    queue.ack(List.of()); // test connectivity
} catch (Exception e) {
    throw new IllegalStateException("Queue backend unreachable: " + e.getMessage());
}

Try / catch

try {
    ObservableQueue queue = eventQueues.getQueue(queueName);
} catch (IllegalArgumentException e) {
    // handled by error 436
} catch (Exception e) {
    LOGGER.error("Queue backend error for {}: {}", queueName, e.getMessage());
    // NonTransientException — cannot recover without fixing backend config
}

Prevention

When it happens

Trigger: The queue provider's getQueue() method throws a non-IllegalArgumentException due to a backend connection failure, NPE in provider initialization, or a configuration error in the provider implementation. The queue backend (e.g., SQS, AMQP broker) is unreachable or misconfigured.

Common situations: SQS/AMQP credentials are invalid or expired. The queue provider bean failed to initialize but was not caught at startup. Network partition between Conductor server and the message broker.

Related errors


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