This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 22ec681a HBASE-25980 Master table.jsp pointed at meta throws 500 when 
no all r… (#3374)
22ec681a is described below

commit 22ec681ad980229f537b9f13966cc9f3d0b0be97
Author: GeorryHuang <[email protected]>
AuthorDate: Sun Jun 27 22:30:28 2021 +0800

    HBASE-25980 Master table.jsp pointed at meta throws 500 when no all r… 
(#3374)
    
    Signed-off-by: Duo Zhang <[email protected]>
---
 .../main/resources/hbase-webapps/master/table.jsp  | 33 +++++++++++++++++++---
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp 
b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
index 801ff4f..f6753df 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
@@ -62,7 +62,8 @@
   import="org.apache.hadoop.hbase.master.http.MetaBrowser"
   import="org.apache.hadoop.hbase.master.http.RegionReplicaInfo"
   import="org.apache.hadoop.hbase.quotas.QuotaSettingsFactory"
-  import="org.apache.hadoop.hbase.quotas.QuotaTableUtil"%>
+  import="org.apache.hadoop.hbase.quotas.QuotaTableUtil"
+  import="org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException" %>
 <%@ page import="org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot" %>
 <%@ page import="org.apache.hadoop.hbase.quotas.ThrottleSettings" %>
 <%@ page import="org.apache.hadoop.hbase.util.Bytes" %>
@@ -313,8 +314,16 @@
           for (int j = 0; j < numMetaReplicas; j++) {
             RegionInfo meta = RegionReplicaUtil.getRegionInfoForReplica(
                                     RegionInfoBuilder.FIRST_META_REGIONINFO, 
j);
-            ServerName metaLocation = 
MetaTableLocator.waitMetaRegionLocation(master.getZooKeeper(), j, 1);
+            //If a metaLocation is null, All of its info would be empty here 
to be displayed.
+            ServerName metaLocation = null;
+            try {
+              metaLocation = 
MetaTableLocator.waitMetaRegionLocation(master.getZooKeeper(), j, 1);
+            } catch (NotAllMetaRegionsOnlineException e) {
+              //Region in transition state here throw a 
NotAllMetaRegionsOnlineException causes
+              //the UI crash.
+            }
             for (int i = 0; i < 1; i++) {
+              //If metaLocation is null, default value below would be 
displayed in UI.
               String hostAndPort = "";
               String readReq = "N/A";
               String writeReq = "N/A";
@@ -378,8 +387,16 @@
            for (int j = 0; j < numMetaReplicas; j++) {
              RegionInfo meta = RegionReplicaUtil.getRegionInfoForReplica(
                                      RegionInfoBuilder.FIRST_META_REGIONINFO, 
j);
-             ServerName metaLocation = 
MetaTableLocator.waitMetaRegionLocation(master.getZooKeeper(), j, 1);
+             //If a metaLocation is null, All of its info would be empty here 
to be displayed.
+             ServerName metaLocation = null;
+             try {
+               metaLocation = 
MetaTableLocator.waitMetaRegionLocation(master.getZooKeeper(), j, 1);
+             } catch (NotAllMetaRegionsOnlineException e) {
+               //Region in transition state here throw a 
NotAllMetaRegionsOnlineException causes
+               //the UI crash.
+             }
              for (int i = 0; i < 1; i++) {
+               //If metaLocation is null, default value below would be 
displayed in UI.
                String hostAndPort = "";
                float locality = 0.0f;
                float localityForSsd = 0.0f;
@@ -426,8 +443,16 @@
           for (int j = 0; j < numMetaReplicas; j++) {
             RegionInfo meta = RegionReplicaUtil.getRegionInfoForReplica(
                                     RegionInfoBuilder.FIRST_META_REGIONINFO, 
j);
-            ServerName metaLocation = 
MetaTableLocator.waitMetaRegionLocation(master.getZooKeeper(), j, 1);
+            //If a metaLocation is null, All of its info would be empty here 
to be displayed.
+            ServerName metaLocation = null;
+            try {
+              metaLocation = 
MetaTableLocator.waitMetaRegionLocation(master.getZooKeeper(), j, 1);
+            } catch (NotAllMetaRegionsOnlineException e) {
+              //Region in transition state here throw a 
NotAllMetaRegionsOnlineException causes
+              //the UI crash.
+            }
             for (int i = 0; i < 1; i++) {
+              //If metaLocation is null, default value below would be 
displayed in UI.
               String hostAndPort = "";
               long compactingCells = 0;
               long compactedCells = 0;

Reply via email to