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
- Verify the connection is actually recoverable within the retry window (broker up, network stable).
- Check that channel_max / maxChannelCount is not permanently exceeded.
- Raise the retry budget if the outage is legitimately longer than the window.
- 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
- Ensure the connection is recoverable within the retry window (broker up).
- Size the retry budget to realistic broker-blip length.
- Add a circuit breaker for sustained channel failures.
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
- Retries completed. IO error while connecting to <addresses>
- Cannot open <connType> channel on <addresses>
- IO error while connecting to <addresses>
- Retries completed. Timeout while connecting to <addresses>
- Fail to open <connType> channel
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/3e5cc0d7437f448c.
Report an issue: GitHub.