This is an automated email from the ASF dual-hosted git repository. zhangduo pushed a commit to branch branch-2.5 in repository https://gitbox.apache.org/repos/asf/hbase.git
commit 153c5f9001287f500bf8760e4c5f6ec37d6f8abc Author: Junegunn Choi <[email protected]> AuthorDate: Sat Mar 1 01:07:02 2025 +0900 HBASE-29066 Fix NPE in rits.jsp when regions are not open (#6594) Signed-off-by: Duo Zhang <[email protected]> (cherry picked from commit fd50561a099a5b3b44b209d5b806e70f24c2aa9c) --- .../hbase/master/assignment/RegionStateNode.java | 8 ++++ .../main/resources/hbase-webapps/master/rits.jsp | 45 ++++++++++++---------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java index 91c0222facd..c00f8c367ad 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java @@ -244,6 +244,14 @@ public class RegionStateNode implements Comparable<RegionStateNode> { return regionLocation; } + public String getRegionServerName() { + ServerName sn = getRegionLocation(); + if (sn != null) { + return sn.getServerName(); + } + return null; + } + public State getState() { return state; } diff --git a/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp b/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp index 3fc960ee0c6..b08c4a37f87 100644 --- a/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/master/rits.jsp @@ -97,7 +97,7 @@ <td><%= regionStateNode.getRegionInfo().getEncodedName() %></td> <td><%= regionStateNode.getRegionInfo().getTable() %></td> <td><%= regionStateNode.getState() %></td> - <td><%= regionStateNode.getRegionLocation().getServerName() %></td> + <td><%= regionStateNode.getRegionServerName() %></td> <% TransitRegionStateProcedure procedure = regionStateNode.getProcedure(); @@ -123,27 +123,30 @@ </div> <jsp:include page="footer.jsp" /> <% } else if (format.equals("json")) { %> -<% - Gson GSON = GsonUtil.createGson().create(); - Map<String, List<Map<String, Object>>> map = new HashMap<>(); - List<Map<String, Object>> rits = new ArrayList<>(); - map.put("rits", rits); - for (RegionStateNode regionStateNode : rit) { - Map<String, Object> r = new HashMap<>(); - r.put("region", regionStateNode.getRegionInfo().getEncodedName()); - r.put("table", regionStateNode.getRegionInfo().getTable().getNameAsString()); - r.put("state", regionStateNode.getState()); - r.put("server", regionStateNode.getRegionLocation().getServerName()); - TransitRegionStateProcedure procedure = regionStateNode.getProcedure(); - if (procedure != null) { - r.put("procedureId", procedure.getProcId()); - r.put("procedureState", procedure.getState().toString()); + <% + Gson GSON = GsonUtil.createGson().create(); + Map<String, List<Map<String, Object>>> map = new HashMap<>(); + List<Map<String, Object>> rits = new ArrayList<>(); + map.put("rits", rits); + for (RegionStateNode regionStateNode : rit) { + Map<String, Object> r = new HashMap<>(); + r.put("region", regionStateNode.getRegionInfo().getEncodedName()); + r.put("table", regionStateNode.getRegionInfo().getTable().getNameAsString()); + r.put("state", regionStateNode.getState()); + r.put("server", regionStateNode.getRegionServerName()); + + TransitRegionStateProcedure procedure = regionStateNode.getProcedure(); + if (procedure != null) { + r.put("procedureId", procedure.getProcId()); + r.put("procedureState", procedure.getState().toString()); + } + + RegionState rs = regionStateNode.toRegionState(); + r.put("startTime", rs.getStamp()); + r.put("duration", System.currentTimeMillis() - rs.getStamp()); + + rits.add(r); } - RegionState rs = regionStateNode.toRegionState(); - r.put("startTime", rs.getStamp()); - r.put("duration", System.currentTimeMillis() - rs.getStamp()); - rits.add(r); - } %> <%= GSON.toJson(map) %> <% } else { %>
