diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/zk/ZKMasterClient.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/zk/ZKMasterClient.java index be8ca3f2982ce9b3ec3dc43aaf962dd777f63eaf..46f48b6d765333e58b170c8134ed8f2274a34373 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/zk/ZKMasterClient.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/zk/ZKMasterClient.java @@ -24,6 +24,7 @@ import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.enums.ExecutionStatus; import org.apache.dolphinscheduler.common.enums.ZKNodeType; import org.apache.dolphinscheduler.common.model.Server; +import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.dao.entity.ProcessInstance; import org.apache.dolphinscheduler.dao.entity.TaskInstance; import org.apache.dolphinscheduler.server.builder.TaskExecutionContextBuilder; @@ -72,7 +73,7 @@ public class ZKMasterClient extends AbstractZKClient { this.initSystemZNode(); // check if fault tolerance is required?failure and tolerance - if (getActiveMasterNum() == 1) { + if (getActiveMasterNum() == 1 && checkZKNodeExists(OSUtils.getHost(), ZKNodeType.MASTER)) { failoverWorker(null, true); failoverMaster(null); } diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java index 4689a88fe0272474f7d6b31056d467a29b91f729..e75e20becbfb5c24bd8c85985bb431b512bd492d 100644 --- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java +++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java @@ -145,8 +145,18 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator { try { String path = getZNodeParentPath(zkNodeType); List serverList = super.getChildrenKeys(path); + if(zkNodeType == ZKNodeType.WORKER){ + List workerList = new ArrayList<>(); + for(String group : serverList){ + List groupServers = super.getChildrenKeys(path + Constants.SLASH + group); + for(String groupServer : groupServers){ + workerList.add(group + Constants.SLASH + groupServer); + } + } + serverList = workerList; + } for(String server : serverList){ - masterMap.putIfAbsent(server, super.get(path + "/" + server)); + masterMap.putIfAbsent(server, super.get(path + Constants.SLASH + server)); } } catch (Exception e) { logger.error("get server list failed", e);