From 4903d5e64cde144238ce3367b708c893d841f8ec Mon Sep 17 00:00:00 2001 From: Balazs Meszaros Date: Wed, 25 Apr 2018 13:50:59 +0200 Subject: [PATCH] HBASE-20487 Sorting table regions by region name does not work on web UI --- .../resources/hbase-webapps/master/table.jsp | 173 +++++++++--------- 1 file changed, 84 insertions(+), 89 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 5900a9aabb..a8b54ed56c 100644 --- a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp @@ -24,10 +24,11 @@ import="java.util.Collection" import="java.util.Collections" import="java.util.Comparator" + import="java.util.HashMap" import="java.util.LinkedHashMap" import="java.util.List" import="java.util.Map" - import="java.util.HashMap" + import="java.util.Objects" import="java.util.TreeMap" import="org.apache.commons.lang3.StringEscapeUtils" import="org.apache.hadoop.conf.Configuration" @@ -445,7 +446,7 @@ if ( fqtn != null ) {

Table Regions

Sort As { - if (entry1 == null || entry1.getValue() == null) { - return -1; - } else if (entry2 == null || entry2.getValue() == null) { - return 1; - } - int result = Long.compare(entry1.getValue().getReadRequestCount(), - entry2.getValue().getReadRequestCount()); - if (reverseOrder) { - result = -1 * result; - } - return result; - }); - } else if (sortKey.equals("writerequest")) { - Collections.sort(entryList, (entry1, entry2) -> { - if (entry1 == null || entry1.getValue() == null) { - return -1; - } else if (entry2 == null || entry2.getValue() == null) { - return 1; - } - int result = Long.compare(entry1.getValue().getWriteRequestCount(), - entry2.getValue().getWriteRequestCount()); - if (reverseOrder) { - result = -1 * result; - } - return result; - }); - } else if (sortKey.equals("size")) { - Collections.sort(entryList, (entry1, entry2) -> { - if (entry1 == null || entry1.getValue() == null) { - return -1; - } else if (entry2 == null || entry2.getValue() == null) { - return 1; - } - int result = Double.compare(entry1.getValue().getStoreFileSize().get(), - entry2.getValue().getStoreFileSize().get()); - if (reverseOrder) { - result = -1 * result; - } - return result; - }); - } else if (sortKey.equals("filecount")) { - Collections.sort(entryList, (entry1, entry2) -> { - if (entry1 == null || entry1.getValue() == null) { - return -1; - } else if (entry2 == null || entry2.getValue() == null) { - return 1; - } - int result = Integer.compare(entry1.getValue().getStoreCount(), - entry2.getValue().getStoreCount()); - if (reverseOrder) { - result = -1 * result; - } - return result; - }); - } else if (sortKey.equals("memstore")) { - Collections.sort(entryList, (entry1, entry2) -> { - if (entry1 == null || entry1.getValue() == null) { - return -1; - } else if (entry2 == null || entry2.getValue() == null) { - return 1; - } - int result = Double.compare(entry1.getValue().getMemStoreSize().get(), - entry2.getValue().getMemStoreSize().get()); - if (reverseOrder) { - result = -1 * result; - } - return result; - }); - } else if (sortKey.equals("locality")) { - Collections.sort(entryList, (entry1, entry2) -> { - if (entry1 == null || entry1.getValue() == null) { - return -1; - } else if (entry2 == null || entry2.getValue() == null) { - return 1; - } - int result = Double.compare(entry1.getValue().getDataLocality(), - entry2.getValue().getDataLocality()); - if (reverseOrder) { - result = -1 * result; - } - return result; - }); - } + if (Objects.equals(sortKey, "regionname")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + RegionInfo regionInfo1 = entry1.getKey(); + RegionInfo regionInfo2 = entry2.getKey(); + String name1 = showWhole ? Bytes.toStringBinary(regionInfo1.getRegionName()) + : regionInfo1.getEncodedName(); + String name2 = showWhole ? Bytes.toStringBinary(regionInfo2.getRegionName()) + : regionInfo2.getEncodedName(); + return name1.compareTo(name2); + }); + } else if (Objects.equals(sortKey, "readrequest")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + return Long.compare(entry1.getValue().getReadRequestCount(), + entry2.getValue().getReadRequestCount()); + }); + } else if (Objects.equals(sortKey, "writerequest")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + return Long.compare(entry1.getValue().getWriteRequestCount(), + entry2.getValue().getWriteRequestCount()); + }); + } else if (Objects.equals(sortKey, "size")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + return Double.compare(entry1.getValue().getStoreFileSize().get(), + entry2.getValue().getStoreFileSize().get()); + }); + } else if (Objects.equals(sortKey, "filecount")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + return Integer.compare(entry1.getValue().getStoreCount(), + entry2.getValue().getStoreCount()); + }); + } else if (Objects.equals(sortKey, "memstore")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + return Double.compare(entry1.getValue().getMemStoreSize().get(), + entry2.getValue().getMemStoreSize().get()); + }); + } else if (Objects.equals(sortKey, "locality")) { + Collections.sort(entryList, (entry1, entry2) -> { + if (entry1 == null || entry1.getValue() == null) { + return -1; + } else if (entry2 == null || entry2.getValue() == null) { + return 1; + } + return Double.compare(entry1.getValue().getDataLocality(), + entry2.getValue().getDataLocality()); + }); } + + if (reverseOrder) { + Collections.reverse(entryList); + } + numRegions = regions.size(); int numRegionsRendered = 0; // render all regions @@ -838,7 +833,7 @@ if(showWhole=='true')document.getElementById("showWhole").checked=true; function reloadAsSort(){ var url="?name="+'<%= URLEncoder.encode(fqtn) %>'; - if(document.getElementById("sel").selectedIndex>0){ + if(document.getElementById("sel").selectedIndex>=0){ url=url+"&sort="+document.getElementById("sel").value; } if(document.getElementById("ascending").checked){ -- 2.17.0