conductor-oss/conductor · error · RuntimeException

Retries completed. Cannot open <connType> channel on <addres

Error message

Retries completed. Cannot open <connType> channel on <addresses>

What it means

getOrCreateChannel caught IOException from createChannel, retrySettings is non-null, but retry.continueOrPropogate(e, retryIndex) threw, meaning the retry budget was exhausted while createChannel kept failing with IOException. The original IOException is wrapped as the cause.

Source

Thrown at amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPConnection.java:243

                                    cause);
                        });
                return locChn;
            } catch (final IOException e) {
                AMQPRetryPattern retry = retrySettings;
                if (retry == null) {
                    throw new RuntimeException(
                            "Cannot open "
                                    + connType
                                    + " channel on "
                                    + Arrays.stream(addresses)
                                            .map(address -> address.toString())
                                            .collect(Collectors.joining(",")),
                            e);
                }
                try {
                    retry.continueOrPropogate(e, retryIndex);
                } catch (Exception ex) {
                    throw new RuntimeException(
                            "Retries completed. Cannot open "
                                    + connType
                                    + " channel on "
                                    + Arrays.stream(addresses)
                                            .map(address -> address.toString())
                                            .collect(Collectors.joining(",")),
                            e);
                }
                retryIndex++;
            } catch (final Exception e) {
                AMQPRetryPattern retry = retrySettings;
                if (retry == null) {
                    throw new RuntimeException(
                            "Cannot open "
                                    + connType
                                    + " channel on "
                                    + Arrays.stream(addresses)
                                            .map(address -> address.toString())

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Verify the connection is actually recoverable within the retry window (broker up, network stable).
  2. Check that channel_max / maxChannelCount is not permanently exceeded.
  3. Raise the retry budget if the outage is legitimately longer than the window.
  4. Add a circuit breaker upstream to fail fast on a sustained channel failure.

Example fix

# before: channel retries exhaust on a short window
conductor.amqp.retry.limit=3

# after: give channel recreation room to outlast a broker blip
conductor.amqp.retry.limit=8
Defensive patterns

Strategy: retry

Try / catch

// Channel retries already exhausted; hard failure
try {
    amqpConnection.getOrCreateChannel(type, name);
} catch (RuntimeException e) {
    LOGGER.error("channel retries exhausted: {}", e.getMessage(), e);
    throw e;
}

Prevention

When it happens

Trigger: createChannel throws IOException on every retry attempt until the AMQPRetryPattern limit/duration is reached, then continueOrPropogate raises and the retries-completed message is thrown.

Common situations: The connection is persistently closed (broker down for the whole window) so createChannel can never succeed; a non-transient channel error such as exceeding channel_max on every attempt.

Related errors


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