{"record":{"id":"3a050e0f86588edd","repo":"t8y2/dbx","slug":"bootstrap-servers-or-zookeeper-connect-string-is-r","errorCode":null,"errorMessage":"bootstrap_servers or zookeeper_connect_string is required","messagePattern":"bootstrap_servers or zookeeper_connect_string is required","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agents/drivers/kafka/src/main/java/com/dbx/agent/kafka/KafkaAgent.java","lineNumber":327,"sourceCode":"        String servers = stringOrEmpty(conn, \"bootstrap_servers\");\n        if (servers.isBlank()) {\n            servers = stringOrEmpty(conn, \"bootstrapServers\");\n        }\n        if (servers.isBlank()) {\n            throw new IllegalArgumentException(\"bootstrap_servers is required\");\n        }\n        return servers;\n    }\n\n    static JsonObject resolveBrokerConnection(JsonObject conn) throws Exception {\n        String configured = stringOrEmpty(conn, \"bootstrap_servers\");\n        if (configured.isBlank()) configured = stringOrEmpty(conn, \"bootstrapServers\");\n        if (!configured.isBlank()) return conn;\n\n        String connectString = stringOrEmpty(conn, \"zookeeper_connect_string\");\n        if (connectString.isBlank()) connectString = stringOrEmpty(conn, \"zookeeperServers\");\n        if (connectString.isBlank()) {\n            throw new IllegalArgumentException(\"bootstrap_servers or zookeeper_connect_string is required\");\n        }\n\n        JsonObject resolved = conn.deepCopy();\n        resolved.addProperty(\"bootstrap_servers\", discoverBootstrapServers(connectString, securityProtocol(conn), conn));\n        return resolved;\n    }\n\n    private static String discoverBootstrapServers(String connectString, String securityProtocol, JsonObject conn)\n        throws Exception {\n        int sessionTimeout = intOrDefault(conn, \"zookeeper_session_timeout_ms\", DEFAULT_SESSION_TIMEOUT_MS);\n        int connectionTimeout = intOrDefault(\n            conn,\n            \"zookeeper_connection_timeout_ms\",\n            DEFAULT_ZOOKEEPER_CONNECTION_TIMEOUT_MS\n        );\n        CountDownLatch connected = new CountDownLatch(1);\n        ZooKeeper zooKeeper = new ZooKeeper(connectString, sessionTimeout, event -> {\n            if (event.getState() == Watcher.Event.KeeperState.SyncConnected) connected.countDown();","sourceCodeStart":309,"sourceCodeEnd":345,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/kafka/src/main/java/com/dbx/agent/kafka/KafkaAgent.java#L309-L345","documentation":"Thrown by resolveBrokerConnection when the connection JSON has neither bootstrap_servers/bootstrapServers nor a zookeeper_connect_string. The agent needs at least one of these to know where to reach the cluster: direct broker endpoints, or a ZooKeeper ensemble it can query for broker discovery.","triggerScenarios":"Thrown at agents/drivers/kafka/src/main/java/com/dbx/agent/kafka/KafkaAgent.java:327 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide bootstrap_servers with one or more Kafka broker host:port entries","Alternatively provide zookeeper_connect_string so the agent discovers brokers via ZooKeeper","Check for typos in the key names; both snake_case and camelCase aliases are accepted"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}