{"record":{"id":"961cc15a505ba503","repo":"apache/pulsar","slug":"at-least-one-broker-bind-address-must-be-configure","errorCode":null,"errorMessage":"At least one broker bind address must be configured","messagePattern":"At least one broker bind address must be configured","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java","lineNumber":661,"sourceCode":"        this.producerNameGenerator = new DistributedIdGenerator(pulsar.getCoordinationService(),\n                PRODUCER_NAME_GENERATOR_PATH, pulsar.getConfiguration().getClusterName());\n\n        // Initialize scalable topic service\n        var scalableTopicResources = pulsar.getPulsarResources().getScalableTopicResources();\n        if (scalableTopicResources != null) {\n            this.scalableTopicService = new org.apache.pulsar.broker.service.scalable.ScalableTopicService(\n                    this, scalableTopicResources, pulsar.getCoordinationService());\n            this.scalableTopicService.start();\n        }\n\n        ServiceConfiguration serviceConfig = pulsar.getConfiguration();\n        List<BindAddress> bindAddresses = BindAddressValidator.validateBindAddresses(serviceConfig,\n                Arrays.asList(\"pulsar\", \"pulsar+ssl\"));\n        String internalListenerName = serviceConfig.getInternalListenerName();\n\n        // create a channel for each bind address\n        if (bindAddresses.size() == 0) {\n            throw new IllegalArgumentException(\"At least one broker bind address must be configured\");\n        }\n        for (BindAddress a : bindAddresses) {\n            InetSocketAddress addr = new InetSocketAddress(a.getAddress().getHost(), a.getAddress().getPort());\n            boolean isTls = \"pulsar+ssl\".equals(a.getAddress().getScheme());\n            PulsarChannelInitializer.PulsarChannelOptions opts = PulsarChannelInitializer.PulsarChannelOptions.builder()\n                            .enableTLS(isTls)\n                            .listenerName(a.getListenerName()).build();\n\n            ServerBootstrap b = defaultServerBootstrap.clone();\n            PulsarChannelInitializer channelInitializer =\n                    pulsarChannelInitFactory.newPulsarChannelInitializer(pulsar, opts);\n            pulsarChannelInitializers.add(channelInitializer);\n            b.childHandler(channelInitializer);\n            try {\n                Channel ch = b.bind(addr).sync().channel();\n                listenChannels.add(ch);\n\n                // identify the primary channel. Note that the legacy bindings appear first and have no listener.","sourceCodeStart":643,"sourceCodeEnd":679,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java#L643-L679","documentation":"BrokerService startup validation found no bind address configured: neither the advertised address nor any listener provides an address to bind the server socket to, so the broker cannot open its listeners.","triggerScenarios":"Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java:661 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set advertisedListeners/bindAddresses in broker.conf","Fix malformed listener definitions and restart"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}