{"record":{"id":"41c4caf17a4ff629","repo":"apache/dolphinscheduler","slug":"10177","errorCode":"10177","errorMessage":"worker address {0} invalid","messagePattern":"worker address (.+?) invalid","errorType":"exception","errorClass":"ServiceException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkerGroupServiceImpl.java","lineNumber":200,"sourceCode":"        // check if the worker group has any dependent environments\n        List<EnvironmentWorkerGroupRelation> environmentWorkerGroupRelations =\n                environmentWorkerGroupRelationMapper.selectList(new QueryWrapper<EnvironmentWorkerGroupRelation>()\n                        .lambda().eq(EnvironmentWorkerGroupRelation::getWorkerGroup, workerGroup.getName()));\n\n        if (CollectionUtils.isNotEmpty(environmentWorkerGroupRelations)) {\n            throw new ServiceException(Status.WORKER_GROUP_DEPENDENT_ENVIRONMENT_EXISTS,\n                    environmentWorkerGroupRelations.size());\n        }\n    }\n\n    private void checkWorkerGroupAddrList(String workerGroupAddress) {\n        if (Strings.isNullOrEmpty(workerGroupAddress)) {\n            return;\n        }\n        Map<String, String> serverMaps = registryClient.getServerMaps(RegistryNodeType.WORKER);\n        for (String addr : workerGroupAddress.split(Constants.COMMA)) {\n            if (!serverMaps.containsKey(addr)) {\n                throw new ServiceException(Status.WORKER_ADDRESS_INVALID);\n            }\n        }\n    }\n\n    /**\n     * query worker group paging\n     *\n     * @param loginUser login user\n     * @param pageNo    page number\n     * @param searchVal search value\n     * @param pageSize  page size\n     * @return worker group list page\n     */\n    @Override\n    public Result queryAllGroupPaging(User loginUser, Integer pageNo, Integer pageSize, String searchVal) {\n        // list from index\n        int fromIndex = (pageNo - 1) * pageSize;\n        // list to index","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkerGroupServiceImpl.java#L182-L218","documentation":"Thrown by checkWorkerGroupAddrList when saving a worker group whose comma-separated address list contains an address that is not currently registered as a live WORKER node in the registry (ZooKeeper). The service validates each addr against registryClient.getServerMaps(RegistryNodeType.WORKER).","triggerScenarios":"Calling saveWorkerGroup (create/update) with workerAddresses like '192.168.1.10:1234,host:1234' where any entry is not a key of the registry's current WORKER server map.","commonSituations":"Typo in host or port; worker process is down so it is absent from the registry; stale worker address from a decommissioned node; saving via API without quotes so whitespace makes the key mismatch.","solutions":["Verify the worker host:port matches an active entry shown in the Monitor > Service Management worker list and correct the address.","Start/restart the worker process on the given host so it registers in the registry, then save.","Remove dead or unregistered addresses from the worker group's address list."],"exampleFix":"// before\nsetWorkerAddresses(\"10.0.0.5:1234,10.0.0.6:1235\"); // second worker not running\n// after\nsetWorkerAddresses(\"10.0.0.5:1234,10.0.0.6:1234\"); // both registered, correct port","handlingStrategy":"validation","validationCode":"Set<String> live = registryClient.getServerMaps(RegistryNodeType.WORKER).keySet();\nboolean valid = Arrays.stream(addresses.split(\",\"))\n    .map(String::trim).allMatch(live::contains);","typeGuard":null,"tryCatchPattern":"try {\n    workerGroupService.saveWorkerGroup(loginUser, name, addrList);\n} catch (ServiceException e) {\n    if (e.getCode() == 10177) { /* resolve/refresh worker addresses */ }\n    else throw e;\n}","preventionTips":["Copy worker addresses from Monitor > Service Management rather than typing them.","Confirm the worker process is up and registered before configuring groups.","Avoid trailing spaces/whitespace in comma-separated address lists."],"tags":["worker-group","registry","worker-address","validation"],"backgroundTag":"invalid-argument-value","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}