conductor-oss/conductor · error · IllegalArgumentException

Settings are undefined

Error message

Settings are undefined

What it means

Constructor guard on AMQPObservableQueue: the AMQPSettings argument is null. Thrown during construction. The Builder always creates an AMQPSettings via new AMQPSettings(properties, queueType).fromURI(queueURI), so this guard is hit by direct construction that omits settings.

Source

Thrown at amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueue.java:86

    protected LinkedBlockingQueue<Message> messages = new LinkedBlockingQueue<>();
    private volatile boolean running;

    public AMQPObservableQueue(
            ConnectionFactory factory,
            Address[] addresses,
            boolean useExchange,
            AMQPSettings settings,
            AMQPRetryPattern retrySettings,
            int batchSize,
            int pollTimeInMS) {
        if (factory == null) {
            throw new IllegalArgumentException("Connection factory is undefined");
        }
        if (addresses == null || addresses.length == 0) {
            throw new IllegalArgumentException("Addresses are undefined");
        }
        if (settings == null) {
            throw new IllegalArgumentException("Settings are undefined");
        }
        if (batchSize <= 0) {
            throw new IllegalArgumentException("Batch size must be greater than 0");
        }
        if (pollTimeInMS <= 0) {
            throw new IllegalArgumentException("Poll time must be greater than 0 ms");
        }
        this.useExchange = useExchange;
        this.settings = settings;
        this.batchSize = batchSize;
        this.amqpConnection = AMQPConnection.getInstance(factory, addresses, retrySettings);
        this.retrySettings = retrySettings;
        this.setPollTimeInMS(pollTimeInMS);
    }

    @Override
    public Observable<Message> observe() {
        Observable.OnSubscribe<Message> onSubscribe = null;

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Construct via the Builder, which builds AMQPSettings from properties and the queue URI.
  2. If constructing directly, build settings first: new AMQPSettings(properties, queueType).fromURI(queueURI).

Example fix

// before: settings null
new AMQPObservableQueue(factory, addresses, useExchange, null, retry, batchSize, pollTimeInMS);

// after: build settings from the queue URI
AMQPSettings settings = new AMQPSettings(properties, queueType).fromURI(queueURI);
new AMQPObservableQueue(factory, addresses, useExchange, settings, retry, batchSize, pollTimeInMS);
Defensive patterns

Strategy: validation

Validate before calling

if (settings == null) {
    throw new IllegalArgumentException("settings required; build via AMQPSettings.fromURI");
}

Prevention

When it happens

Trigger: Calling the AMQPObservableQueue constructor directly with a null AMQPSettings.

Common situations: Custom/test wiring that passes null for settings; the caller forgot to build settings from the queue URI.

Related errors


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