From 3ce5a53a10c4587b3bc6b949bccd2579f72bd0f5 Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Sat, 14 Sep 2024 11:41:48 +0800 Subject: [PATCH 01/10] HDDS-11196. Improve SCM WebUI Display. --- .../main/resources/webapps/static/ozone.css | 4 + .../webapps/static/templates/jvm.html | 2 +- .../hadoop/hdds/scm/node/SCMNodeManager.java | 18 +++++ .../hadoop/hdds/scm/server/SCMMXBean.java | 3 + .../scm/server/StorageContainerManager.java | 73 +++++++++++++++++++ .../resources/webapps/scm/scm-overview.html | 39 +++++++++- .../src/main/resources/webapps/scm/scm.js | 7 ++ 7 files changed, 141 insertions(+), 5 deletions(-) diff --git a/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.css b/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.css index e08e9c520604..389d9d78f215 100644 --- a/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.css +++ b/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.css @@ -91,3 +91,7 @@ body { .om-roles-background { background-color: #dcfbcd!important; } + +.scm-roles-background { + background-color: #dcfbcd!important; +} \ No newline at end of file diff --git a/hadoop-hdds/framework/src/main/resources/webapps/static/templates/jvm.html b/hadoop-hdds/framework/src/main/resources/webapps/static/templates/jvm.html index c1f7d16aefa8..9706ebdf6b3a 100644 --- a/hadoop-hdds/framework/src/main/resources/webapps/static/templates/jvm.html +++ b/hadoop-hdds/framework/src/main/resources/webapps/static/templates/jvm.html @@ -21,6 +21,6 @@ Input arguments: - {{$ctrl.jmx.InputArguments}} +
{{$ctrl.jmx.InputArguments.join('\n')}}
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java index fa8f316aa42f..5ef9ae47a573 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java @@ -146,6 +146,8 @@ public class SCMNodeManager implements NodeManager { private static final String LASTHEARTBEAT = "LASTHEARTBEAT"; private static final String USEDSPACEPERCENT = "USEDSPACEPERCENT"; private static final String TOTALCAPACITY = "CAPACITY"; + private static final String DNUUID = "UUID"; + private static final String VERSION = "VERSION"; /** * Constructs SCM machine Manager. */ @@ -447,6 +449,8 @@ public RegisteredCommand register( processNodeReport(datanodeDetails, nodeReport); LOG.info("Updated datanode to: {}", dn); scmNodeEventPublisher.fireEvent(SCMEvents.NODE_ADDRESS_UPDATE, dn); + } else if (isVersionChange(oldNode.getVersion(), datanodeDetails.getVersion())) { + nodeStateManager.updateNode(datanodeDetails, layoutInfo); } } catch (NodeNotFoundException e) { LOG.error("Cannot find datanode {} from nodeStateManager", @@ -508,6 +512,18 @@ private boolean updateDnsToUuidMap( return ipChanged || hostNameChanged; } + /** + * Check if the version has been updated. + * + * @param oldVersion datanode oldVersion + * @param newVersion datanode newVersion + * @return true means replacement is needed, while false means replacement is not needed. + */ + private boolean isVersionChange(String oldVersion, String newVersion) { + final boolean ipChanged = !Objects.equals(oldVersion, newVersion); + return ipChanged; + } + /** * Send heartbeat to indicate the datanode is alive and doing well. * @@ -1136,6 +1152,8 @@ public Map> getNodeStatusInfo() { String nonScmUsedPerc = storagePercentage[1]; map.put(USEDSPACEPERCENT, "Ozone: " + scmUsedPerc + "%, other: " + nonScmUsedPerc + "%"); + map.put(DNUUID, dni.getUuidString()); + map.put(VERSION, dni.getVersion()); nodes.put(hostName, map); } return nodes; 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 de609356b225..472d690a4722 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.util.List; import java.util.Map; import org.apache.hadoop.hdds.annotation.InterfaceAudience; @@ -74,6 +75,8 @@ public interface SCMMXBean extends ServiceRuntimeInfo { String getScmRatisRoles(); + List> getRatisRoles(); + /** * Primordial node is the node on which scm init operation is performed. * @return hostname of primordialNode 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 868e54f19351..acae0686497b 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 @@ -170,7 +170,12 @@ import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod; import org.apache.hadoop.security.authentication.client.AuthenticationException; import org.apache.hadoop.util.ReflectionUtils; +import org.apache.ratis.proto.RaftProtos; +import org.apache.ratis.protocol.RaftPeer; import org.apache.ratis.protocol.RaftPeerId; +import org.apache.ratis.server.DivisionInfo; +import org.apache.ratis.server.RaftServer; +import org.apache.ratis.thirdparty.com.google.protobuf.ByteString; import org.apache.ratis.util.ExitUtils; import org.apache.ratis.util.JvmPauseMonitor; import org.slf4j.Logger; @@ -2137,6 +2142,74 @@ public String getScmRatisRoles() { HddsUtils.format(server.getRatisRoles()) : "STANDALONE"; } + @Override + public List> getRatisRoles() { + final SCMRatisServer server = getScmHAManager().getRatisServer(); + + // If Ratis is enabled + if(server != null) { + + // To attempt to find the SCM Leader, + // and if the Leader is not found + // return Leader is not found message. + RaftServer.Division division = server.getDivision(); + RaftPeer leader = getLeader(division); + if (leader == null) { + return getRatisRolesException("No leader found"); + } + + // If the SCMRatisServer is stopped, return a service stopped message. + if (server.isStopped()) { + return getRatisRolesException("Server is shutting down"); + } + + // Attempt to retrieve role information. + try { + List ratisRoles = server.getRatisRoles(); + List> result = new ArrayList<>(); + for (String role : ratisRoles) { + String[] roleArr = role.split(":"); + List scmInfo = new ArrayList<>(); + // Host Name + scmInfo.add(roleArr[0]); + // Node ID + scmInfo.add(roleArr[3]); + // Ratis Port + scmInfo.add(roleArr[1]); + // Role + scmInfo.add(roleArr[2]); + result.add(scmInfo); + } + return result; + } catch (Exception e) { + LOG.error("Failed to getRatisRoles.", e); + return getRatisRolesException("Exception Occurred, " + e.getMessage()); + } + } + + // If Ratis is not enabled, we will throw an exception directly. + return getRatisRolesException("Ratis is disabled"); + } + + public RaftPeer getLeader(RaftServer.Division division) { + if (division.getInfo().isLeader()) { + return division.getPeer(); + } else { + DivisionInfo info = division.getInfo(); + RaftProtos.RoleInfoProto roleInfoProto = info.getRoleInfoProto(); + RaftProtos.FollowerInfoProto followerInfo = roleInfoProto.getFollowerInfo(); + RaftProtos.ServerRpcProto leaderInfo = followerInfo.getLeaderInfo(); + RaftProtos.RaftPeerProto peerLeaderId = leaderInfo.getId(); + ByteString leaderId = peerLeaderId.getId(); + return leaderId.isEmpty() ? null : + division.getRaftConf().getPeer(RaftPeerId.valueOf(leaderId)); + } + } + + private static List> getRatisRolesException(String exceptionString) { + return Collections.singletonList(Collections.singletonList(exceptionString)); + } + /** * @return hostname of primordialNode */ 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 3f825d4e25f7..577a3fd54b99 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 @@ -140,6 +140,10 @@

Node Status

'sortdesc':(columnName == 'comstate' && !reverse)}">Commisioned State Last Heartbeat + UUID + Version @@ -157,6 +161,8 @@

Node Status

{{typestat.opstate}} {{typestat.comstate}} {{typestat.lastheartbeat}} + {{typestat.uuid}} + {{typestat.version}} @@ -210,10 +216,6 @@

Status

Force Exit Safe Mode {{$ctrl.overview.jmx.SafeModeExitForceful}} - - SCM Roles (HA) - {{$ctrl.overview.jmx.ScmRatisRoles}} - Primordial Node (HA) {{$ctrl.overview.jmx.PrimordialNode}} @@ -235,6 +237,35 @@

Meta-Data Volume Information

+

SCM Roles (HA)

+

{{$ctrl.overview.jmx.RatisRoles[0][0]}}

+
+ + + + + + + + + + + + + + + + + + + + + + + +
Host NameNode IDRatis PortRole
{{roles[0]}}{{roles[1]}}{{roles[2]}}{{roles[3]}}
{{roles[0]}}{{roles[1]}}{{roles[2]}}{{roles[3]}}
+
+

Safemode rules statuses

diff --git a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm.js b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm.js index 6fac68495307..e00f8b8ede8c 100644 --- a/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm.js +++ b/hadoop-hdds/server-scm/src/main/resources/webapps/scm/scm.js @@ -56,6 +56,11 @@ } } + $http.get("jmx?qry=Ratis:service=RaftServer,group=*,id=*") + .then(function (result) { + ctrl.role = result.data.beans[0]; + }); + function get_protocol(URLScheme, value, baseProto, fallbackProto) { let protocol = "unknown" let port = -1; @@ -95,6 +100,8 @@ capacity: value && value.find((element) => element.key === "CAPACITY").value, comstate: value && value.find((element) => element.key === "COMSTATE").value, lastheartbeat: value && value.find((element) => element.key === "LASTHEARTBEAT").value, + uuid: value && value.find((element) => element.key === "UUID").value, + version: value && value.find((element) => element.key === "VERSION").value, port: portSpec.port, protocol: portSpec.proto } From 489600d0bce3f040af1a658a3b6319197d8bed7f Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Sat, 14 Sep 2024 11:54:45 +0800 Subject: [PATCH 02/10] HDDS-11196. Fix CheckStyle. --- .../apache/hadoop/hdds/scm/server/StorageContainerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 acae0686497b..41850b53d472 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 @@ -2147,7 +2147,7 @@ public List> getRatisRoles() { final SCMRatisServer server = getScmHAManager().getRatisServer(); // If Ratis is enabled - if(server != null) { + if (server != null) { // To attempt to find the SCM Leader, // and if the Leader is not found From 75c123f2e7676bbe102bb66d852d1c12cb41e007 Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Sat, 14 Sep 2024 13:00:28 +0800 Subject: [PATCH 03/10] HDDS-11196. Improve Some Code. --- .../src/main/resources/webapps/scm/scm-overview.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 577a3fd54b99..dd2ace79db65 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 @@ -237,8 +237,7 @@

Meta-Data Volume Information

-

SCM Roles (HA)

-

{{$ctrl.overview.jmx.RatisRoles[0][0]}}

+

SCM Roles (HA)

From bb38091a9b18ee8a6b43638c72f641bfac423532 Mon Sep 17 00:00:00 2001 From: slfan1989 <55643692+slfan1989@users.noreply.github.com> Date: Mon, 16 Sep 2024 19:33:12 +0800 Subject: [PATCH 04/10] Update hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java Co-authored-by: Ivan Andika --- .../hadoop/hdds/scm/server/StorageContainerManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 41850b53d472..8a1a466c7925 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 @@ -2146,8 +2146,11 @@ public String getScmRatisRoles() { public List> getRatisRoles() { final SCMRatisServer server = getScmHAManager().getRatisServer(); - // If Ratis is enabled - if (server != null) { + // If Ratis is disabled + if (server == null) { + return getRatisRolesException("Ratis is disabled") + } + ... // To attempt to find the SCM Leader, // and if the Leader is not found From 222789820ed5d88baee2badfc02b44067ce7b709 Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Mon, 16 Sep 2024 21:15:20 +0800 Subject: [PATCH 05/10] HDDS-11196. Improve Some Code. --- .../hadoop/hdds/scm/server/SCMMXBean.java | 4 +- .../scm/server/StorageContainerManager.java | 80 ++++++++----------- .../resources/webapps/scm/scm-overview.html | 5 +- 3 files changed, 38 insertions(+), 51 deletions(-) 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 472d690a4722..75a5193116c6 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 @@ -73,9 +73,7 @@ public interface SCMMXBean extends ServiceRuntimeInfo { String getClusterId(); - String getScmRatisRoles(); - - List> getRatisRoles(); + List> getScmRatisRoles(); /** * Primordial node is the node on which scm init operation is performed. 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 8a1a466c7925..49a7a5c879c5 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 @@ -2136,62 +2136,50 @@ public ContainerTokenGenerator getContainerTokenGenerator() { } @Override - public String getScmRatisRoles() { - final SCMRatisServer server = getScmHAManager().getRatisServer(); - return server != null ? - HddsUtils.format(server.getRatisRoles()) : "STANDALONE"; - } - - @Override - public List> getRatisRoles() { + public List> getScmRatisRoles() { final SCMRatisServer server = getScmHAManager().getRatisServer(); // If Ratis is disabled if (server == null) { - return getRatisRolesException("Ratis is disabled") + return getRatisRolesException("Ratis is disabled"); } - ... - // To attempt to find the SCM Leader, - // and if the Leader is not found - // return Leader is not found message. - RaftServer.Division division = server.getDivision(); - RaftPeer leader = getLeader(division); - if (leader == null) { - return getRatisRolesException("No leader found"); - } + // To attempt to find the SCM Leader, + // and if the Leader is not found + // return Leader is not found message. + RaftServer.Division division = server.getDivision(); + RaftPeer leader = getLeader(division); + if (leader == null) { + return getRatisRolesException("No leader found"); + } - // If the SCMRatisServer is stopped, return a service stopped message. - if (server.isStopped()) { - return getRatisRolesException("Server is shutting down"); - } + // If the SCMRatisServer is stopped, return a service stopped message. + if (server.isStopped()) { + return getRatisRolesException("Server is shutting down"); + } - // Attempt to retrieve role information. - try { - List ratisRoles = server.getRatisRoles(); - List> result = new ArrayList<>(); - for (String role : ratisRoles) { - String[] roleArr = role.split(":"); - List scmInfo = new ArrayList<>(); - // Host Name - scmInfo.add(roleArr[0]); - // Node ID - scmInfo.add(roleArr[3]); - // Ratis Port - scmInfo.add(roleArr[1]); - // Role - scmInfo.add(roleArr[2]); - result.add(scmInfo); - } - return result; - } catch (Exception e) { - LOG.error("Failed to getRatisRoles.", e); - return getRatisRolesException("Exception Occurred, " + e.getMessage()); + // Attempt to retrieve role information. + try { + List ratisRoles = server.getRatisRoles(); + List> result = new ArrayList<>(); + for (String role : ratisRoles) { + String[] roleArr = role.split(":"); + List scmInfo = new ArrayList<>(); + // Host Name + scmInfo.add(roleArr[0]); + // Node ID + scmInfo.add(roleArr[3]); + // Ratis Port + scmInfo.add(roleArr[1]); + // Role + scmInfo.add(roleArr[2]); + result.add(scmInfo); } + return result; + } catch (Exception e) { + LOG.error("Failed to getRatisRoles.", e); + return getRatisRolesException("Exception Occurred, " + e.getMessage()); } - - // If Ratis is not enabled, we will throw an exception directly. - return getRatisRolesException("Ratis is disabled"); } public RaftPeer getLeader(RaftServer.Division division) { 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 dd2ace79db65..fe38a2c27c7a 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 @@ -237,8 +237,9 @@

Meta-Data Volume Information

-

SCM Roles (HA)

-
+

SCM Roles (HA)

+

{{$ctrl.overview.jmx.ScmRatisRoles[0][0]}}

+
From cbdb24130a1751a94d0a97823bd092b5987a1af3 Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Mon, 16 Sep 2024 22:01:05 +0800 Subject: [PATCH 06/10] HDDS-11196. Improve Some Code. --- .../java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java | 4 ++-- .../src/main/resources/webapps/scm/scm-overview.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java index 5ef9ae47a573..daeb158c2d2a 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java @@ -520,8 +520,8 @@ private boolean updateDnsToUuidMap( * @return true means replacement is needed, while false means replacement is not needed. */ private boolean isVersionChange(String oldVersion, String newVersion) { - final boolean ipChanged = !Objects.equals(oldVersion, newVersion); - return ipChanged; + final boolean versionChanged = !Objects.equals(oldVersion, newVersion); + return versionChanged; } /** 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 fe38a2c27c7a..0f233bf4ea18 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 @@ -249,7 +249,7 @@

+

From b6e1fc733240482d689fecb0f89b4db83d3ab535 Mon Sep 17 00:00:00 2001 From: slfan1989 <55643692+slfan1989@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:03:53 +0800 Subject: [PATCH 07/10] Update hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java Co-authored-by: Ivan Andika --- .../hdds/scm/server/StorageContainerManager.java | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) 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 49a7a5c879c5..d736f00542ce 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 @@ -2182,19 +2182,8 @@ public List> getScmRatisRoles() { } } - public RaftPeer getLeader(RaftServer.Division division) { - if (division.getInfo().isLeader()) { - return division.getPeer(); - } else { - DivisionInfo info = division.getInfo(); - RaftProtos.RoleInfoProto roleInfoProto = info.getRoleInfoProto(); - RaftProtos.FollowerInfoProto followerInfo = roleInfoProto.getFollowerInfo(); - RaftProtos.ServerRpcProto leaderInfo = followerInfo.getLeaderInfo(); - RaftProtos.RaftPeerProto peerLeaderId = leaderInfo.getId(); - ByteString leaderId = peerLeaderId.getId(); - return leaderId.isEmpty() ? null : - division.getRaftConf().getPeer(RaftPeerId.valueOf(leaderId)); - } + public RaftPeerId getLeaderId(RaftServer.Division division) { + return division.getInfo().getLeaderId(); } private static List> getRatisRolesException(String exceptionString) { From c16adad478f032d775e67ce46259c7cdd7b9bebb Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Tue, 17 Sep 2024 16:06:09 +0800 Subject: [PATCH 08/10] HDDS-11462. Fix Unit Test Error. --- .../apache/hadoop/hdds/scm/server/StorageContainerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d736f00542ce..e5695461d768 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 @@ -2148,7 +2148,7 @@ public List> getScmRatisRoles() { // and if the Leader is not found // return Leader is not found message. RaftServer.Division division = server.getDivision(); - RaftPeer leader = getLeader(division); + RaftPeerId leader = getLeaderId(division); if (leader == null) { return getRatisRolesException("No leader found"); } From 13d4da6d569254839fdeaaa7b19e3e155472a6bb Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Tue, 17 Sep 2024 16:18:29 +0800 Subject: [PATCH 09/10] HDDS-11196. Improve Some Code. --- .../java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java | 3 +++ .../hadoop/hdds/scm/server/StorageContainerManager.java | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java index daeb158c2d2a..7121d8f7a9d2 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java @@ -450,6 +450,9 @@ public RegisteredCommand register( LOG.info("Updated datanode to: {}", dn); scmNodeEventPublisher.fireEvent(SCMEvents.NODE_ADDRESS_UPDATE, dn); } else if (isVersionChange(oldNode.getVersion(), datanodeDetails.getVersion())) { + LOG.info("Update the version for registered datanode = {}, " + + "oldVersion = {}, newVersion = {}.", + datanodeDetails.getUuid(), oldNode.getVersion(), datanodeDetails.getVersion()); nodeStateManager.updateNode(datanodeDetails, layoutInfo); } } catch (NodeNotFoundException e) { 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 e5695461d768..534fbc5d171c 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 @@ -170,12 +170,8 @@ import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod; import org.apache.hadoop.security.authentication.client.AuthenticationException; import org.apache.hadoop.util.ReflectionUtils; -import org.apache.ratis.proto.RaftProtos; -import org.apache.ratis.protocol.RaftPeer; import org.apache.ratis.protocol.RaftPeerId; -import org.apache.ratis.server.DivisionInfo; import org.apache.ratis.server.RaftServer; -import org.apache.ratis.thirdparty.com.google.protobuf.ByteString; import org.apache.ratis.util.ExitUtils; import org.apache.ratis.util.JvmPauseMonitor; import org.slf4j.Logger; From 5002a9d4616ced77a75cce5b9f89b20ac1227318 Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Tue, 17 Sep 2024 16:21:33 +0800 Subject: [PATCH 10/10] HDDS-11196. Improve Some Code. --- .../hadoop/hdds/scm/server/StorageContainerManager.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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 534fbc5d171c..5f69d9fee2bc 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 @@ -2144,8 +2144,8 @@ public List> getScmRatisRoles() { // and if the Leader is not found // return Leader is not found message. RaftServer.Division division = server.getDivision(); - RaftPeerId leader = getLeaderId(division); - if (leader == null) { + RaftPeerId leaderId = division.getInfo().getLeaderId(); + if (leaderId == null) { return getRatisRolesException("No leader found"); } @@ -2178,10 +2178,6 @@ public List> getScmRatisRoles() { } } - public RaftPeerId getLeaderId(RaftServer.Division division) { - return division.getInfo().getLeaderId(); - } - private static List> getRatisRolesException(String exceptionString) { return Collections.singletonList(Collections.singletonList(exceptionString)); }
{{roles[0]}} {{roles[1]}}