From 86227e3941e1726039086d46a3335113fe1d0026 Mon Sep 17 00:00:00 2001 From: Russole <850905junior@gmail.com> Date: Fri, 3 Apr 2026 10:45:17 +0800 Subject: [PATCH 1/2] HDDS-14966. SCM Web UI Leader Readiness column does not appear to be displaying the correct status in HA --- .../src/main/java/org/apache/hadoop/ozone/OmUtils.java | 8 +++++--- .../java/org/apache/hadoop/ozone/om/OzoneManager.java | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java index 80d4bf06bcde..15c2bca298e1 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java @@ -1079,7 +1079,7 @@ public static boolean isBucketSnapshotIndicator(String key) { } public static List> format( - List nodes, int port, String leaderId, String leaderReadiness) { + List nodes, int port, String leaderId) { List> omInfoList = new ArrayList<>(); // Ensuring OM's are printed in correct order List omNodes = nodes.stream() @@ -1089,8 +1089,10 @@ public static List> format( for (ServiceInfo info : omNodes) { // Printing only the OM's running if (info.getNodeType() == HddsProtos.NodeType.OM) { - String role = info.getOmRoleInfo().getNodeId().equals(leaderId) - ? "LEADER" : "FOLLOWER"; + String nodeId = info.getOmRoleInfo().getNodeId(); + String role = nodeId.equals(leaderId) ? "LEADER" : "FOLLOWER"; + String leaderReadiness = nodeId.equals(leaderId) + ? "LEADER_AND_READY" : "NOT_LEADER"; List omInfo = new ArrayList<>(); omInfo.add(info.getHostname()); omInfo.add(info.getOmRoleInfo().getNodeId()); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 0587b71f239c..d27fb5c2cb69 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -3217,7 +3217,7 @@ public List> getRatisRoles() { if (null == omRatisServer) { return getRatisRolesException("Server is shutting down"); } - String leaderReadiness = omRatisServer.getLeaderStatus().name(); + final RaftPeerId leaderId = omRatisServer.getLeaderId(); if (leaderId == null) { LOG.error(NO_LEADER_ERROR_MESSAGE); @@ -3231,7 +3231,7 @@ public List> getRatisRoles() { LOG.error("Failed to getServiceList", e); return getRatisRolesException("IO-Exception Occurred, " + e.getMessage()); } - return OmUtils.format(serviceList, port, leaderId.toString(), leaderReadiness); + return OmUtils.format(serviceList, port, leaderId.toString()); } /** From fd6979651ca4ab866f2e3b01033f3db3b6b05798 Mon Sep 17 00:00:00 2001 From: Russole <850905junior@gmail.com> Date: Fri, 3 Apr 2026 14:54:36 +0800 Subject: [PATCH 2/2] Replace OM role strings with RaftPeerRole enum --- .../src/main/java/org/apache/hadoop/ozone/OmUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java index 15c2bca298e1..5dd11662f50a 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java @@ -39,6 +39,8 @@ import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_PORT_DEFAULT; import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ReadConsistencyProto.READ_CONSISTENCY_UNSPECIFIED; +import static org.apache.ratis.proto.RaftProtos.RaftPeerRole.FOLLOWER; +import static org.apache.ratis.proto.RaftProtos.RaftPeerRole.LEADER; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; @@ -1090,7 +1092,8 @@ public static List> format( // Printing only the OM's running if (info.getNodeType() == HddsProtos.NodeType.OM) { String nodeId = info.getOmRoleInfo().getNodeId(); - String role = nodeId.equals(leaderId) ? "LEADER" : "FOLLOWER"; + String role = nodeId.equals(leaderId) ? + LEADER.name() : FOLLOWER.name(); String leaderReadiness = nodeId.equals(leaderId) ? "LEADER_AND_READY" : "NOT_LEADER"; List omInfo = new ArrayList<>();