This is an automated email from the ASF dual-hosted git repository.
adoroszlai 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 d80b6293e5 HDDS-6728. SCM UI not showing correct HA roles (#3401)
d80b6293e5 is described below
commit d80b6293e55037ae80e4281b5c74d0522337dedd
Author: Symious <[email protected]>
AuthorDate: Tue Jul 26 17:19:49 2022 +0800
HDDS-6728. SCM UI not showing correct HA roles (#3401)
---
.../apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java | 18 ++++++++++++------
.../ozone/scm/TestStorageContainerManagerHA.java | 14 ++++++++++++++
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
index f8193fa21b..d549c2bfe9 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
@@ -37,7 +37,6 @@ import org.apache.hadoop.hdds.ratis.RatisHelper;
import org.apache.hadoop.hdds.scm.AddSCMRequest;
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
-import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.hdds.security.x509.SecurityConfig;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.util.Time;
@@ -250,6 +249,7 @@ public class SCMRatisServerImpl implements SCMRatisServer {
@Override
public List<String> getRatisRoles() throws IOException {
Collection<RaftPeer> peers = division.getGroup().getPeers();
+ RaftPeer leader = getLeader();
List<String> ratisRoles = new ArrayList<>();
for (RaftPeer peer : peers) {
InetAddress peerInetAddress = null;
@@ -260,12 +260,8 @@ public class SCMRatisServerImpl implements SCMRatisServer {
LOG.error("SCM Ratis PeerInetAddress {} is unresolvable",
peer.getAddress());
}
- boolean isLocal = false;
- if (peerInetAddress != null) {
- isLocal = NetUtils.isLocalAddress(peerInetAddress);
- }
ratisRoles.add((peer.getAddress() == null ? "" :
- peer.getAddress().concat(isLocal ?
+ peer.getAddress().concat(peer.equals(leader) ?
":".concat(RaftProtos.RaftPeerRole.LEADER.toString()) :
":".concat(RaftProtos.RaftPeerRole.FOLLOWER.toString()))
.concat(":".concat(peer.getId().toString()))
@@ -353,4 +349,14 @@ public class SCMRatisServerImpl implements SCMRatisServer {
UUID.fromString(clusterId.replace(OzoneConsts.CLUSTER_ID_PREFIX, "")));
}
+ private RaftPeer getLeader() {
+ if (division.getInfo().isLeader()) {
+ return division.getPeer();
+ } else {
+ ByteString leaderId = division.getInfo().getRoleInfoProto()
+ .getFollowerInfo().getLeaderInfo().getId().getId();
+ return leaderId.isEmpty() ? null :
+ division.getRaftConf().getPeer(RaftPeerId.valueOf(leaderId));
+ }
+ }
}
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
index 30386fe633..fdf3c19820 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/TestStorageContainerManagerHA.java
@@ -57,7 +57,9 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.time.Instant;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -299,4 +301,16 @@ public class TestStorageContainerManagerHA {
true);
Assert.assertTrue(StorageContainerManager.scmBootstrap(conf2));
}
+
+ @Test
+ public void testGetRatisRolesDetail() throws IOException {
+ Set<String> resultSet = new HashSet<>();
+ for (StorageContainerManager scm: cluster.getStorageContainerManagers()) {
+ resultSet.addAll(scm.getScmHAManager().getRatisServer().getRatisRoles());
+ }
+ System.out.println(resultSet);
+ Assert.assertEquals(3, resultSet.size());
+ Assert.assertEquals(1,
+ resultSet.stream().filter(x -> x.contains("LEADER")).count());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]