{"record":{"id":"b3d447ba94fe163c","repo":"apache/pulsar","slug":"broker-id-brokerid-not-found-in-available-bro","errorCode":null,"errorMessage":"Broker id '${brokerId}' not found in available brokers.","messagePattern":"Broker id '(.+?)' not found in available brokers\\.","errorType":"http","errorClass":"RestException","httpStatus":404,"severity":"error","filePath":"pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java","lineNumber":1204,"sourceCode":"     *\n     * @param brokerId broker's id (lookup service address)\n     */\n    protected CompletableFuture<Void> maybeRedirectToBroker(String brokerId) {\n        // backwards compatibility\n        String cleanedBrokerId = brokerId.replaceFirst(\"http[s]?://\", \"\");\n        if (pulsar.getBrokerId().equals(cleanedBrokerId)\n                // backwards compatibility\n                || (\"http://\" + cleanedBrokerId).equals(pulsar().getWebServiceAddress())\n                || (\"https://\" + cleanedBrokerId).equals(pulsar().getWebServiceAddressTls())) {\n            // no need to redirect, the current broker matches the given broker id\n            return CompletableFuture.completedFuture(null);\n        }\n        LockManager<BrokerLookupData> brokerLookupDataLockManager =\n                pulsar().getCoordinationService().getLockManager(BrokerLookupData.class);\n        return brokerLookupDataLockManager.readLock(LoadManager.LOADBALANCE_BROKERS_ROOT + \"/\" + cleanedBrokerId)\n                .thenAccept(brokerLookupDataOptional -> {\n                    if (brokerLookupDataOptional.isEmpty()) {\n                        throw new RestException(Status.NOT_FOUND,\n                                \"Broker id '\" + brokerId + \"' not found in available brokers.\");\n                    }\n                    brokerLookupDataOptional.ifPresent(brokerLookupData -> {\n                        URI targetBrokerUri;\n                        if ((isRequestHttps() || StringUtils.isBlank(brokerLookupData.getWebServiceUrl()))\n                                && StringUtils.isNotBlank(brokerLookupData.getWebServiceUrlTls())) {\n                            targetBrokerUri = URI.create(brokerLookupData.getWebServiceUrlTls());\n                        } else {\n                            targetBrokerUri = URI.create(brokerLookupData.getWebServiceUrl());\n                        }\n                        URI redirect = UriBuilder.fromUri(uri.getRequestUri())\n                                .scheme(targetBrokerUri.getScheme())\n                                .host(targetBrokerUri.getHost())\n                                .port(targetBrokerUri.getPort()).build();\n                        log.debug()\n                                .attr(\"redirect\", redirect)\n                                .attr(\"broker\", cleanedBrokerId)\n                                .log(\"Redirecting the rest call\");","sourceCodeStart":1186,"sourceCodeEnd":1222,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java#L1186-L1222","documentation":"Admin redirect guard in maybeRedirectToBroker: the supplied broker id (lookup service address) matches neither this broker's id nor any registered broker in the cluster, so the request can neither be served locally nor forwarded; typically a stale or mistyped broker address from client-side discovery data.","triggerScenarios":"Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java:1204 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry against an active broker (lookup will find one)","Wait for the dead broker's sessions/ownership to be re-acquired"],"exampleFix":null,"handlingStrategy":"retry","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-14T05:17:10.506Z"}