conductor-oss/conductor · error · IllegalArgumentException

Poll time must be greater than 0 ms

Error message

Poll time must be greater than 0 ms

What it means

Constructor guard on AMQPObservableQueue: pollTimeInMS <= 0. pollTimeInMS drives the Observable.interval schedule used in sequential-processing mode, so a non-positive value is rejected. The Builder computes it as (int) properties.getPollTimeDuration().toMillis().

Source

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

            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;
        // This will enabled the messages to be processed one after the other as per the
        // observable next behavior.
        if (settings.isSequentialProcessing()) {
            LOGGER.info("Subscribing for the message processing on schedule basis");
            receiveMessages();
            onSubscribe =

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Set a positive poll-time duration in AMQPEventQueueProperties (e.g. 100ms or more).
  2. Confirm the duration unit in config is correct so toMillis() is positive.
  3. If constructing directly, pass an explicit positive pollTimeInMS.

Example fix

# before: poll time truncates to 0ms -> constructor rejects
conductor.amqp.pollTimeDuration=0ms

# after: set a positive poll interval
conductor.amqp.pollTimeDuration=100ms
Defensive patterns

Strategy: validation

Validate before calling

if (pollTimeInMS <= 0) {
    throw new IllegalArgumentException(
        "pollTime must be positive; check conductor.amqp.pollTimeDuration");
}

Prevention

When it happens

Trigger: Constructing the queue with pollTimeInMS of 0 or negative; the Builder used because properties.getPollTimeDuration() resolved to a non-positive millisecond value.

Common situations: The poll-time property is unset or configured with a duration that truncates to 0ms; a bad duration unit in config.

Related errors


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