{"record":{"id":"ab209b87af06f7dc","repo":"alibaba/canal","slug":"manageraddress-can-t-not-found-config-for","errorCode":null,"errorMessage":"managerAddress: can't not found config for [:]","messagePattern":"managerAddress: can't not found config for \\[:\\]","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"critical","filePath":"deployer/src/main/java/com/alibaba/otter/canal/deployer/CanalLauncher.java","lineNumber":84,"sourceCode":"                if (StringUtils.isEmpty(name)) {\n                    name = AddressUtils.getHostName();\n                }\n\n                String registerIp = CanalController.getProperty(properties, CanalConstants.CANAL_REGISTER_IP);\n                if (StringUtils.isEmpty(registerIp)) {\n                    registerIp = AddressUtils.getHostIp();\n                }\n                final PlainCanalConfigClient configClient = new PlainCanalConfigClient(managerAddress,\n                    user,\n                    passwd,\n                    registerIp,\n                    Integer.parseInt(adminPort),\n                    autoRegister,\n                    autoCluster,\n                    name);\n                PlainCanal canalConfig = configClient.findServer(null);\n                if (canalConfig == null) {\n                    throw new IllegalArgumentException(\"managerAddress:\" + managerAddress\n                                                       + \" can't not found config for [\" + registerIp + \":\" + adminPort\n                                                       + \"]\");\n                }\n                Properties managerProperties = canalConfig.getProperties();\n                // merge local\n                managerProperties.putAll(properties);\n                int scanIntervalInSecond = Integer.valueOf(CanalController.getProperty(managerProperties,\n                    CanalConstants.CANAL_AUTO_SCAN_INTERVAL,\n                    \"5\"));\n                executor.scheduleWithFixedDelay(new Runnable() {\n\n                    private PlainCanal lastCanalConfig;\n\n                    public void run() {\n                        try {\n                            if (lastCanalConfig == null) {\n                                lastCanalConfig = configClient.findServer(null);\n                            } else {","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/deployer/src/main/java/com/alibaba/otter/canal/deployer/CanalLauncher.java#L66-L102","documentation":"Thrown by CanalLauncher when configClient.findServer(null) returns null — meaning the canal-manager server has no server config registered for this node's identity (registerIp:adminPort). The launcher had already validated credentials (error 297 guard passed), connected the PlainCanalConfigClient, and queried for the server config; a null response means the node is unknown to canal-admin.","triggerScenarios":"canal.admin.manager is reachable and credentials are valid, but canal-admin has no server configuration entry matching this node's registerIp + adminPort. Common when the node has not been registered/auto-registered in the admin UI.","commonSituations":"First-time deployment where the node was not added in canal-admin's server-config page; registerIp mismatch (node advertises an IP admin doesn't expect); adminPort differs from the registered value; auto-register disabled and node not pre-created.","solutions":["Log in to canal-admin and create a server config whose IP:port matches the node's canal.register.ip and canal.admin.port.","Enable auto-register (canal.admin.auto.register = true) so the node self-registers with canal-admin.","Verify canal.register.ip resolves correctly (defaults to the host IP via AddressUtils.getHostIp) and matches the admin entry.","Confirm the canal-admin address in canal.admin.manager is correct and reachable."],"exampleFix":"# before\ncanal.admin.manager = 127.0.0.1:8089\ncanal.admin.user = admin\ncanal.admin.passwd = ****\n# node not registered in admin UI -> null config\n# after: enable auto-register\ncanal.admin.auto.register = true\ncanal.admin.register.name = canal-node-1","handlingStrategy":"validation","validationCode":"// Before relying on findServer, confirm the node is registered\nString registerIp = properties.getProperty(CanalConstants.CANAL_REGISTER_IP);\nif (StringUtils.isEmpty(registerIp)) registerIp = AddressUtils.getHostIp();\n// in canal-admin UI, create a server config matching registerIp:adminPort,\n// or enable canal.admin.auto.register = true","typeGuard":null,"tryCatchPattern":"PlainCanal canalConfig = configClient.findServer(null);\nif (canalConfig == null) {\n    throw new IllegalArgumentException(\"No server config in canal-manager for \"\n        + registerIp + \":\" + adminPort + \". Register the node or enable canal.admin.auto.register.\");\n}","preventionTips":["Pre-register the node in canal-admin with the exact registerIp and adminPort.","Enable canal.admin.auto.register for first-time bootstrap.","Verify canal.register.ip matches what canal-admin expects."],"tags":["config","admin","manager","startup","deployer"],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}