From 0b272f9ca668e10f130482e93e6850ea5daa8bd1 Mon Sep 17 00:00:00 2001 From: bao liang <29528966+lenboo@users.noreply.github.com> Date: Tue, 14 Jan 2020 16:27:10 +0800 Subject: [PATCH] [feature] #1813 remove "_001" after the master/server register path in zookeeper (#1820) * change master/worker register path. * remove "_" from register path. --- .../common/zk/AbstractZKClient.java | 55 +++++++------------ .../common/zk/ZookeeperCachedOperator.java | 1 + 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/AbstractZKClient.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/AbstractZKClient.java index a7e1334ad..f62e10668 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/AbstractZKClient.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/AbstractZKClient.java @@ -115,21 +115,19 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator{ } } - /** * create zookeeper path according the zk node type. * @param zkNodeType zookeeper node type * @return register zookeeper path * @throws Exception */ - private String createZNodePath(ZKNodeType zkNodeType) throws Exception { + private String createZNodePath(ZKNodeType zkNodeType, String host) throws Exception { // specify the format of stored data in ZK nodes String heartbeatZKInfo = ResInfo.getHeartBeatInfo(new Date()); // create temporary sequence nodes for master znode - String parentPath = getZNodeParentPath(zkNodeType); - String serverPathPrefix = parentPath + "/" + OSUtils.getHost(); - String registerPath = serverPathPrefix + UNDERLINE; - super.persistEphemeral(registerPath, heartbeatZKInfo); + String registerPath= getZNodeParentPath(zkNodeType) + SINGLE_SLASH + host; + + super.persistEphemeral(registerPath, heartbeatZKInfo); logger.info("register {} node {} success" , zkNodeType.toString(), registerPath); return registerPath; } @@ -148,7 +146,7 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator{ zkNodeType.toString(), host); return registerPath; } - registerPath = createZNodePath(zkNodeType); + registerPath = createZNodePath(zkNodeType, host); // handle dead server handleDeadServer(registerPath, zkNodeType, Constants.DELETE_ZK_OP); @@ -166,25 +164,19 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator{ * @throws Exception errors */ public void handleDeadServer(String zNode, ZKNodeType zkNodeType, String opType) throws Exception { - //ip_sequenceno - String[] zNodesPath = zNode.split("\\/"); - String ipSeqNo = zNodesPath[zNodesPath.length - 1]; - + String host = getHostByEventDataPath(zNode); String type = (zkNodeType == ZKNodeType.MASTER) ? MASTER_PREFIX : WORKER_PREFIX; - //check server restart, if restart , dead server path in zk should be delete if(opType.equals(DELETE_ZK_OP)){ - String[] ipAndSeqNo = ipSeqNo.split(UNDERLINE); - String ip = ipAndSeqNo[0]; - removeDeadServerByHost(ip, type); + removeDeadServerByHost(host, type); }else if(opType.equals(ADD_ZK_OP)){ - String deadServerPath = getDeadZNodeParentPath() + SINGLE_SLASH + type + UNDERLINE + ipSeqNo; + String deadServerPath = getDeadZNodeParentPath() + SINGLE_SLASH + type + UNDERLINE + host; if(!super.isExisted(deadServerPath)){ //add dead server info to zk dead server path : /dead-servers/ - super.persist(deadServerPath,(type + UNDERLINE + ipSeqNo)); + super.persist(deadServerPath,(type + UNDERLINE + host)); logger.info("{} server dead , and {} added to zk dead server path success" , zkNodeType.toString(), zNode); @@ -285,21 +277,13 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator{ } Map serverMaps = getServerMaps(zkNodeType); for(String hostKey : serverMaps.keySet()){ - if(hostKey.startsWith(host + UNDERLINE)){ + if(hostKey.startsWith(host)){ return true; } } return false; } - /** - * get zkclient - * @return zookeeper client - */ - public CuratorFramework getZkClient() { - return zkClient; - } - /** * * @return get worker node parent path @@ -436,19 +420,22 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator{ } /** - * get host ip, string format: masterParentPath/ip_000001/value + * get host ip, string format: masterParentPath/ip * @param path path - * @return host ip, string format: masterParentPath/ip_000001/value + * @return host ip, string format: masterParentPath/ip */ protected String getHostByEventDataPath(String path) { - int startIndex = path.lastIndexOf("/")+1; - int endIndex = path.lastIndexOf("_"); - - if(startIndex >= endIndex){ - logger.error("parse ip error"); + if(StringUtils.isEmpty(path)){ + logger.error("empty path!"); + return ""; + } + String[] pathArray = path.split(SINGLE_SLASH); + if(pathArray.length < 1){ + logger.error("parse ip error: {}", path); return ""; } - return path.substring(startIndex, endIndex); + return pathArray[pathArray.length - 1]; + } /** * acquire zk lock diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/ZookeeperCachedOperator.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/ZookeeperCachedOperator.java index daec76531..5aa25552d 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/ZookeeperCachedOperator.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/zk/ZookeeperCachedOperator.java @@ -77,6 +77,7 @@ public class ZookeeperCachedOperator extends ZookeeperOperator { return treeCache; } + @Override public void close() { treeCache.close(); try { -- GitLab