From c95cae4ec3a7b70f1f5094169affb46755dc0569 Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Tue, 18 May 2021 17:23:47 +0530 Subject: [PATCH 1/7] HDDS-5241.SCM UI should have leader/follower and Primordial SCM information --- .../apache/hadoop/hdds/scm/server/SCMMXBean.java | 7 +++++++ .../hdds/scm/server/StorageContainerManager.java | 13 +++++++++++++ .../main/resources/webapps/scm/scm-overview.html | 8 ++++++++ .../dist/src/main/compose/ozone-ha/docker-config | 1 + 4 files changed, 29 insertions(+) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java index 6e6d440c0913..7c9fb89de33f 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java @@ -18,6 +18,8 @@ package org.apache.hadoop.hdds.scm.server; +import java.io.IOException; +import java.util.List; import java.util.Map; import org.apache.hadoop.hdds.annotation.InterfaceAudience; @@ -70,4 +72,9 @@ public interface SCMMXBean extends ServiceRuntimeInfo { String getScmId(); String getClusterId(); + + List getScmRatisRoles() throws IOException; + + String getPrimordialNode(); + } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java index 44a7b8a86d22..bc7c7ed6a4d3 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java @@ -1708,4 +1708,17 @@ ContainerTokenSecretManager getContainerTokenSecretManager() { return containerTokenMgr; } + @Override + public List getScmRatisRoles() throws IOException { + return getScmHAManager().getRatisServer().getRatisRoles(); + } + + @Override + public String getPrimordialNode() { + if (SCMHAUtils.isSCMHAEnabled(configuration)) { + return SCMHAUtils.getPrimordialSCM(configuration); + } + return null; + } + } diff --git a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html index c9ce21675a72..9a477a59d6a2 100644 --- a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html +++ b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html @@ -62,6 +62,14 @@

Status

Node Manager: Safe mode status {{$ctrl.overview.jmx.InSafeMode}} + + SCM Roles (HA) + {{$ctrl.overview.jmx.ScmRatisRoles}} + + + Primordial Node (HA) + {{$ctrl.overview.jmx.PrimordialNode}} + diff --git a/hadoop-ozone/dist/src/main/compose/ozone-ha/docker-config b/hadoop-ozone/dist/src/main/compose/ozone-ha/docker-config index bdc0c4331ccf..40f27606faed 100644 --- a/hadoop-ozone/dist/src/main/compose/ozone-ha/docker-config +++ b/hadoop-ozone/dist/src/main/compose/ozone-ha/docker-config @@ -35,6 +35,7 @@ OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata OZONE-SITE.XML_hdds.datanode.dir=/data/hdds OZONE-SITE.XML_ozone.datanode.pipeline.limit=1 OZONE-SITE.XML_hdds.scmclient.max.retry.timeout=30s +OZONE-SITE.XML_ozone.scm.primordial.node.id=scm1 OZONE_CONF_DIR=/etc/hadoop OZONE_LOG_DIR=/var/log/hadoop From c09abb71ec59dbb193b6e6ffdefb74bfe2dafe7e Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Tue, 18 May 2021 18:13:45 +0530 Subject: [PATCH 2/7] trigger new CI check From 383f02653810857a18dfe58d5e7f5b72c5aca7f9 Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Wed, 19 May 2021 23:05:15 +0530 Subject: [PATCH 3/7] addressed review comments --- .../java/org/apache/hadoop/hdds/HddsUtils.java | 17 +++++++++++++++++ .../hadoop/hdds/scm/server/SCMMXBean.java | 3 +-- .../scm/server/StorageContainerManager.java | 4 ++-- .../resources/webapps/scm/scm-overview.html | 2 +- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java index e03e9287ef18..1f3ff7bf8247 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java @@ -562,4 +562,21 @@ static String getPassword(ConfigurationSource conf, String alias) { } return password; } + + /** + * Utility string formatter method to display SCM roles. + * + * @param list + * @return + */ + public static String format(List list) { + StringBuilder sb = new StringBuilder(); + for (String s : list) { + String[] x = s.split(":"); + sb.append(String + .format("{ HostName : %s, Port : %s, Role : %s } ", x[0], x[1], + x[2])); + } + return sb.toString(); + } } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java index 7c9fb89de33f..b48f5757d4e4 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java @@ -19,7 +19,6 @@ package org.apache.hadoop.hdds.scm.server; import java.io.IOException; -import java.util.List; import java.util.Map; import org.apache.hadoop.hdds.annotation.InterfaceAudience; @@ -73,7 +72,7 @@ public interface SCMMXBean extends ServiceRuntimeInfo { String getClusterId(); - List getScmRatisRoles() throws IOException; + String getScmRatisRoles() throws IOException; String getPrimordialNode(); diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java index bc7c7ed6a4d3..b0c2ab9328da 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java @@ -1709,8 +1709,8 @@ ContainerTokenSecretManager getContainerTokenSecretManager() { } @Override - public List getScmRatisRoles() throws IOException { - return getScmHAManager().getRatisServer().getRatisRoles(); + public String getScmRatisRoles() throws IOException { + return HddsUtils.format(getScmHAManager().getRatisServer().getRatisRoles()); } @Override diff --git a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html index 9a477a59d6a2..e7a67edcc390 100644 --- a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html +++ b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm-overview.html @@ -66,7 +66,7 @@

Status

SCM Roles (HA) {{$ctrl.overview.jmx.ScmRatisRoles}} - + Primordial Node (HA) {{$ctrl.overview.jmx.PrimordialNode}} From 1876341002d8545d89de850a7a6293daa7859a7c Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Wed, 19 May 2021 23:08:54 +0530 Subject: [PATCH 4/7] addressed review comments --- .../src/main/java/org/apache/hadoop/hdds/HddsUtils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java index 1f3ff7bf8247..07745c908c7b 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java @@ -566,13 +566,13 @@ static String getPassword(ConfigurationSource conf, String alias) { /** * Utility string formatter method to display SCM roles. * - * @param list + * @param nodes * @return */ - public static String format(List list) { + public static String format(List nodes) { StringBuilder sb = new StringBuilder(); - for (String s : list) { - String[] x = s.split(":"); + for (String node : nodes) { + String[] x = node.split(":"); sb.append(String .format("{ HostName : %s, Port : %s, Role : %s } ", x[0], x[1], x[2])); From f027eda6ff86f49f231e7dc4ee6e0d17866e9777 Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Thu, 20 May 2021 19:45:46 +0530 Subject: [PATCH 5/7] addressed review comments --- .../org/apache/hadoop/hdds/HddsUtils.java | 2 +- .../scm/server/StorageContainerManager.java | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java index 07745c908c7b..307f554491a0 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsUtils.java @@ -574,7 +574,7 @@ public static String format(List nodes) { for (String node : nodes) { String[] x = node.split(":"); sb.append(String - .format("{ HostName : %s, Port : %s, Role : %s } ", x[0], x[1], + .format("{ HostName : %s, Ratis Port : %s, Role : %s } ", x[0], x[1], x[2])); } return sb.toString(); diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java index b0c2ab9328da..9b435191808e 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java @@ -138,6 +138,7 @@ import java.net.InetSocketAddress; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -1713,10 +1714,27 @@ public String getScmRatisRoles() throws IOException { return HddsUtils.format(getScmHAManager().getRatisServer().getRatisRoles()); } + /** + * Primordial node is the node on which scm init operation is performed. + * @return hostname of primordialNode + */ @Override public String getPrimordialNode() { if (SCMHAUtils.isSCMHAEnabled(configuration)) { - return SCMHAUtils.getPrimordialSCM(configuration); + String primordialNode = SCMHAUtils.getPrimordialSCM(configuration); + // primordialNode can be nodeId too . If it is then return hostname. + if (SCMHAUtils.getSCMNodeIds(configuration).contains(primordialNode)) { + List localAndPeerNodes = + new ArrayList<>(scmHANodeDetails.getPeerNodeDetails()); + localAndPeerNodes.add(getSCMHANodeDetails().getLocalNodeDetails()); + for (SCMNodeDetails nodes : localAndPeerNodes) { + if (nodes.getNodeId().equals(primordialNode)) { + return nodes.getHostName(); + } + } + + } + return primordialNode; } return null; } From cc24943d27dcf157034041dc8b6ef074c3f0f37c Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Fri, 21 May 2021 11:23:10 +0530 Subject: [PATCH 6/7] trigger new CI check From 8cc3895129b0b0fac6cf5eaa47763e0017cf5262 Mon Sep 17 00:00:00 2001 From: Sadanand Shenoy Date: Fri, 21 May 2021 12:33:13 +0530 Subject: [PATCH 7/7] add javadoc --- .../java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java | 4 ++++ .../hadoop/hdds/scm/server/StorageContainerManager.java | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java index b48f5757d4e4..63862cee3b70 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java @@ -74,6 +74,10 @@ public interface SCMMXBean extends ServiceRuntimeInfo { String getScmRatisRoles() throws IOException; + /** + * Primordial node is the node on which scm init operation is performed. + * @return hostname of primordialNode + */ String getPrimordialNode(); } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java index 9b435191808e..9b934c83b530 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java @@ -1715,7 +1715,6 @@ public String getScmRatisRoles() throws IOException { } /** - * Primordial node is the node on which scm init operation is performed. * @return hostname of primordialNode */ @Override