From a8fbc9afc99e041a7338418b1b46b89904a77cbe Mon Sep 17 00:00:00 2001 From: ashishk Date: Mon, 6 Mar 2023 18:45:29 +0530 Subject: [PATCH] HDDS-8068. Exception: JMXJsonServlet, getting attribute RatisRoles of Hadoop:service=OzoneManager. --- .../org/apache/hadoop/ozone/om/OzoneManager.java | 4 ++++ .../ozone/om/ratis/OzoneManagerRatisServer.java | 16 +++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) 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 5cdd94b1f196..4ca569f3656a 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 @@ -2915,6 +2915,10 @@ public String getRatisRoles() { if (isRatisEnabled) { try { leaderId = omRatisServer.getLeader(); + if (leaderId == null) { + LOG.error("No leader found"); + return "Exception: Not a leader"; + } serviceList = getServiceList(); } catch (IOException e) { LOG.error("IO-Exception Occurred", e); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java index 9ab6ecdad272..bd8dcf9b7ee8 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java @@ -736,13 +736,15 @@ private static Map getOMHAConfigs( public RaftPeer getLeader() { try { RaftServer.Division division = server.getDivision(raftGroupId); - 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)); + if (division != null) { + 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)); + } } } catch (IOException e) { // In this case we return not a leader.