{"record":{"id":"3e5cc0d7437f448c","repo":"conductor-oss/conductor","slug":"retries-completed-cannot-open-conntype-channel","errorCode":null,"errorMessage":"Retries completed. Cannot open <connType> channel on <addresses>","messagePattern":"Retries completed\\. Cannot open <connType> channel on <addresses>","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPConnection.java","lineNumber":243,"sourceCode":"                                    cause);\n                        });\n                return locChn;\n            } catch (final IOException e) {\n                AMQPRetryPattern retry = retrySettings;\n                if (retry == null) {\n                    throw new RuntimeException(\n                            \"Cannot open \"\n                                    + connType\n                                    + \" channel on \"\n                                    + Arrays.stream(addresses)\n                                            .map(address -> address.toString())\n                                            .collect(Collectors.joining(\",\")),\n                            e);\n                }\n                try {\n                    retry.continueOrPropogate(e, retryIndex);\n                } catch (Exception ex) {\n                    throw new RuntimeException(\n                            \"Retries completed. Cannot open \"\n                                    + connType\n                                    + \" channel on \"\n                                    + Arrays.stream(addresses)\n                                            .map(address -> address.toString())\n                                            .collect(Collectors.joining(\",\")),\n                            e);\n                }\n                retryIndex++;\n            } catch (final Exception e) {\n                AMQPRetryPattern retry = retrySettings;\n                if (retry == null) {\n                    throw new RuntimeException(\n                            \"Cannot open \"\n                                    + connType\n                                    + \" channel on \"\n                                    + Arrays.stream(addresses)\n                                            .map(address -> address.toString())","sourceCodeStart":225,"sourceCodeEnd":261,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPConnection.java#L225-L261","documentation":"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.","triggerScenarios":"createChannel throws IOException on every retry attempt until the AMQPRetryPattern limit/duration is reached, then continueOrPropogate raises and the retries-completed message is thrown.","commonSituations":"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.","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."],"exampleFix":"# before: channel retries exhaust on a short window\nconductor.amqp.retry.limit=3\n\n# after: give channel recreation room to outlast a broker blip\nconductor.amqp.retry.limit=8","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Channel retries already exhausted; hard failure\ntry {\n    amqpConnection.getOrCreateChannel(type, name);\n} catch (RuntimeException e) {\n    LOGGER.error(\"channel retries exhausted: {}\", e.getMessage(), e);\n    throw e;\n}","preventionTips":["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."],"tags":["amqp","rabbitmq","channel","retry","io"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}