You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by bh...@apache.org on 2021/05/26 16:33:12 UTC
[ozone] branch master updated: HDDS-5241. SCM UI should have
leader/follower and Primordial SCM information (#2260)
This is an automated email from the ASF dual-hosted git repository.
bharat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new d9ae1b3 HDDS-5241. SCM UI should have leader/follower and Primordial SCM information (#2260)
d9ae1b3 is described below
commit d9ae1b3b03b2ae322dac56031087fc0c130c0de1
Author: Sadanand Shenoy <sa...@gmail.com>
AuthorDate: Wed May 26 22:02:45 2021 +0530
HDDS-5241. SCM UI should have leader/follower and Primordial SCM information (#2260)
Co-authored-by: Sadanand Shenoy <sa...@cloudera.com>
---
.../java/org/apache/hadoop/hdds/HddsUtils.java | 17 ++++++++++++
.../apache/hadoop/hdds/scm/server/SCMMXBean.java | 10 ++++++++
.../hdds/scm/server/StorageContainerManager.java | 30 ++++++++++++++++++++++
.../main/resources/webapps/scm/scm-overview.html | 8 ++++++
.../dist/src/main/compose/ozone-ha/docker-config | 1 +
5 files changed, 66 insertions(+)
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 6e701d5..c38ff3d 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
@@ -586,4 +586,21 @@ public final class HddsUtils {
}
return password;
}
+
+ /**
+ * Utility string formatter method to display SCM roles.
+ *
+ * @param nodes
+ * @return
+ */
+ public static String format(List<String> nodes) {
+ StringBuilder sb = new StringBuilder();
+ for (String node : nodes) {
+ String[] x = node.split(":");
+ sb.append(String
+ .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/SCMMXBean.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMMXBean.java
index 6e6d440..63862ce 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,7 @@
package org.apache.hadoop.hdds.scm.server;
+import java.io.IOException;
import java.util.Map;
import org.apache.hadoop.hdds.annotation.InterfaceAudience;
@@ -70,4 +71,13 @@ public interface SCMMXBean extends ServiceRuntimeInfo {
String getScmId();
String getClusterId();
+
+ 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 09529d5..9f4a501 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.InetAddress;
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;
@@ -1730,4 +1731,33 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl
return containerTokenMgr;
}
+ @Override
+ public String getScmRatisRoles() throws IOException {
+ return HddsUtils.format(getScmHAManager().getRatisServer().getRatisRoles());
+ }
+
+ /**
+ * @return hostname of primordialNode
+ */
+ @Override
+ public String getPrimordialNode() {
+ if (SCMHAUtils.isSCMHAEnabled(configuration)) {
+ String primordialNode = SCMHAUtils.getPrimordialSCM(configuration);
+ // primordialNode can be nodeId too . If it is then return hostname.
+ if (SCMHAUtils.getSCMNodeIds(configuration).contains(primordialNode)) {
+ List<SCMNodeDetails> 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;
+ }
+
}
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 c9ce216..e7a67ed 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 @@
<td>Node Manager: Safe mode status</td>
<td>{{$ctrl.overview.jmx.InSafeMode}}</td>
</tr>
+ <tr>
+ <td> SCM Roles (HA) </td>
+ <td>{{$ctrl.overview.jmx.ScmRatisRoles}}</td>
+ </tr>
+ <tr ng-hide="!$ctrl.overview.jmx.PrimordialNode">
+ <td> Primordial Node (HA) </td>
+ <td>{{$ctrl.overview.jmx.PrimordialNode}}</td>
+ </tr>
</tbody>
</table>
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 bdc0c43..40f2760 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
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org