{"record":{"id":"25501b52abe90806","repo":"alibaba/canal","slug":"at-least-1-node-required","errorCode":null,"errorMessage":"at least 1 node required.","messagePattern":"at least 1 node required\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"client/src/main/java/com/alibaba/otter/canal/client/impl/SimpleNodeAccessStrategy.java","lineNumber":22,"sourceCode":"import java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.otter.canal.client.CanalNodeAccessStrategy;\n\n/**\n * 简单版本的node访问实现\n * \n * @author jianghang 2012-10-29 下午08:00:23\n * @version 1.0.0\n */\npublic class SimpleNodeAccessStrategy implements CanalNodeAccessStrategy {\n\n    private List<SocketAddress> nodes = new ArrayList<>();\n    private int                 index = 0;\n\n    public SimpleNodeAccessStrategy(List<? extends SocketAddress> nodes){\n        if (nodes == null || nodes.size() < 1) {\n            throw new IllegalArgumentException(\"at least 1 node required.\");\n        }\n        this.nodes.addAll(nodes);\n    }\n\n    @Override\n    public SocketAddress nextNode() {\n        try {\n            return nodes.get(index);\n        } finally {\n            index = (index + 1) % nodes.size();\n        }\n    }\n\n    @Override\n    public SocketAddress currentNode() {\n        return nodes.get(index);\n    }\n","sourceCodeStart":4,"sourceCodeEnd":40,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/client/src/main/java/com/alibaba/otter/canal/client/impl/SimpleNodeAccessStrategy.java#L4-L40","documentation":"Error \"at least 1 node required.\" thrown in alibaba/canal.","triggerScenarios":"Thrown at client/src/main/java/com/alibaba/otter/canal/client/impl/SimpleNodeAccessStrategy.java:22 when the library encounters an invalid state.","commonSituations":"Empty node list. Validate configuration at construction time so a zero-node strategy can never be built; reject blank addresses individually.","solutions":["Provide at least one SocketAddress node when constructing SimpleNodeAccessStrategy.","Check that the configured canal server address list (canal.server / zk path resolution) is not empty."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}