From 396b1716e4e9b0f55f3686ba8e0283555c65c085 Mon Sep 17 00:00:00 2001 From: tlhhup <137273278@qq.com> Date: Fri, 22 May 2020 11:20:54 +0800 Subject: [PATCH] fix bug:#2735 (#2770) 1. store process id in zk. 2. resolve host and port through zk path. 3. modify ui key. --- .../org/apache/dolphinscheduler/common/Constants.java | 2 +- .../apache/dolphinscheduler/common/utils/ResInfo.java | 4 ++-- .../server/master/registry/MasterRegistry.java | 4 +++- .../server/registry/HeartBeatTask.java | 4 +++- .../server/worker/registry/WorkerRegistry.java | 4 +++- .../dolphinscheduler/service/zk/AbstractZKClient.java | 11 +++++++---- .../conf/home/pages/monitor/pages/servers/master.vue | 2 +- .../conf/home/pages/monitor/pages/servers/worker.vue | 2 +- .../src/js/module/i18n/locale/zh_CN.js | 2 +- 9 files changed, 22 insertions(+), 13 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java index d9589320ca..686dce3dd6 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java @@ -507,7 +507,7 @@ public final class Constants { /** * heartbeat for zk info length */ - public static final int HEARTBEAT_FOR_ZOOKEEPER_INFO_LENGTH = 9; + public static final int HEARTBEAT_FOR_ZOOKEEPER_INFO_LENGTH = 10; /** diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java index 9c1d8806c4..fa52a91f91 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ResInfo.java @@ -18,8 +18,6 @@ package org.apache.dolphinscheduler.common.utils; import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.model.Server; -import java.util.Date; - /** * heartbeat for ZK reigster res info */ @@ -109,6 +107,8 @@ public class ResInfo { Double.parseDouble(masterArray[2]))); masterServer.setCreateTime(DateUtils.stringToDate(masterArray[6])); masterServer.setLastHeartbeatTime(DateUtils.stringToDate(masterArray[7])); + //set process id + masterServer.setId(Integer.parseInt(masterArray[9])); return masterServer; } diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/registry/MasterRegistry.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/registry/MasterRegistry.java index de6d3bc2cf..3ddb9e73d2 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/registry/MasterRegistry.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/registry/MasterRegistry.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.server.master.registry; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.state.ConnectionState; import org.apache.curator.framework.state.ConnectionStateListener; +import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.utils.DateUtils; import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.remote.utils.NamedThreadFactory; @@ -131,6 +132,7 @@ public class MasterRegistry { * @return */ private String getLocalAddress(){ - return OSUtils.getHost() + ":" + masterConfig.getListenPort(); + return OSUtils.getHost() + Constants.COLON + masterConfig.getListenPort(); } + } diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/registry/HeartBeatTask.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/registry/HeartBeatTask.java index 6d0eae9316..2345ce9533 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/registry/HeartBeatTask.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/registry/HeartBeatTask.java @@ -73,7 +73,9 @@ public class HeartBeatTask extends Thread{ builder.append(reservedMemory).append(Constants.COMMA); builder.append(startTime).append(Constants.COMMA); builder.append(DateUtils.dateToString(new Date())).append(Constants.COMMA); - builder.append(status); + builder.append(status).append(COMMA); + //save process id + builder.append(OSUtils.getProcessID()); zookeeperRegistryCenter.getZookeeperCachedOperator().update(heartBeatPath, builder.toString()); } catch (Throwable ex){ logger.error("error write heartbeat info", ex); diff --git a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/registry/WorkerRegistry.java b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/registry/WorkerRegistry.java index f7093a1ec7..715db3966e 100644 --- a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/registry/WorkerRegistry.java +++ b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/registry/WorkerRegistry.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.server.worker.registry; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.state.ConnectionState; import org.apache.curator.framework.state.ConnectionStateListener; +import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.utils.DateUtils; import org.apache.dolphinscheduler.common.utils.OSUtils; import org.apache.dolphinscheduler.common.utils.StringUtils; @@ -148,6 +149,7 @@ public class WorkerRegistry { * @return */ private String getLocalAddress(){ - return OSUtils.getHost() + ":" + workerConfig.getListenPort(); + return OSUtils.getHost() + Constants.COLON + workerConfig.getListenPort(); } + } 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 e75e20becb..acbbe76188 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 @@ -123,12 +123,15 @@ public abstract class AbstractZKClient extends ZookeeperCachedOperator { String parentPath = getZNodeParentPath(zkNodeType); List masterServers = new ArrayList<>(); - int i = 0; for (Map.Entry entry : masterMap.entrySet()) { Server masterServer = ResInfo.parseHeartbeatForZKInfo(entry.getValue()); - masterServer.setZkDirectory(parentPath + "/"+ entry.getKey()); - masterServer.setId(i); - i ++; + String key = entry.getKey(); + masterServer.setZkDirectory(parentPath + "/"+ key); + //set host and port + String[] hostAndPort=key.split(COLON); + String[] hosts=hostAndPort[0].split(DIVISION_STRING); + masterServer.setHost(hosts[hosts.length-1]);// fetch the last one + masterServer.setPort(Integer.parseInt(hostAndPort[1])); masterServers.add(masterServer); } return masterServers; diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/master.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/master.vue index dc06712cd2..ecc414c5f6 100644 --- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/master.vue +++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/master.vue @@ -22,7 +22,7 @@
IP: {{item.host}} - {{$t('Process Pid')}}: {{item.port}} + {{$t('Process Pid')}}: {{item.id}} {{$t('Zk registration directory')}}: {{item.zkDirectory}}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue index b386ea0cc0..ceaed89675 100644 --- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue +++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue @@ -22,7 +22,7 @@
IP: {{item.host}} - {{$t('Process Pid')}}: {{item.port}} + {{$t('Process Pid')}}: {{item.id}} {{$t('Zk registration directory')}}: {{item.zkDirectory}}
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js index 2cdf09db7b..777173f6ce 100755 --- a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js +++ b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js @@ -168,7 +168,7 @@ export default { 'Project Name': '项目名称', 'Please enter name': '请输入名称', 'Owned Users': '所属用户', - 'Process Pid': '进程pid', + 'Process Pid': '进程Pid', 'Zk registration directory': 'zk注册目录', cpuUsage: 'cpuUsage', memoryUsage: 'memoryUsage',