HBASE-20487 Sorting table regions by region name does not work on web UI

Signed-off-by: tedyu <yuzhihong@gmail.com>
This commit is contained in:
Balazs Meszaros 2018-04-25 13:50:59 +02:00 committed by tedyu
parent e9a278adc6
commit 650340abb5
1 changed files with 84 additions and 89 deletions

View File

@ -24,10 +24,11 @@
import="java.util.Collection" import="java.util.Collection"
import="java.util.Collections" import="java.util.Collections"
import="java.util.Comparator" import="java.util.Comparator"
import="java.util.HashMap"
import="java.util.LinkedHashMap" import="java.util.LinkedHashMap"
import="java.util.List" import="java.util.List"
import="java.util.Map" import="java.util.Map"
import="java.util.HashMap" import="java.util.Objects"
import="java.util.TreeMap" import="java.util.TreeMap"
import="org.apache.commons.lang3.StringEscapeUtils" import="org.apache.commons.lang3.StringEscapeUtils"
import="org.apache.hadoop.conf.Configuration" import="org.apache.hadoop.conf.Configuration"
@ -445,7 +446,7 @@ if ( fqtn != null ) {
<h2>Table Regions</h2> <h2>Table Regions</h2>
Sort As Sort As
<select id="sel" style="margin-right: 10px"> <select id="sel" style="margin-right: 10px">
<option value="regionName">RegionName</option> <option value="regionname">RegionName</option>
<option value="readrequest">ReadRequest</option> <option value="readrequest">ReadRequest</option>
<option value="writerequest">WriteRequest</option> <option value="writerequest">WriteRequest</option>
<option value="size">StorefileSize</option> <option value="size">StorefileSize</option>
@ -482,93 +483,87 @@ ShowDetailName&Start/End Key<input type="checkbox" id="showWhole" style="margin-
<% <%
List<Map.Entry<RegionInfo, RegionMetrics>> entryList = new ArrayList<>(regionsToLoad.entrySet()); List<Map.Entry<RegionInfo, RegionMetrics>> entryList = new ArrayList<>(regionsToLoad.entrySet());
if(sortKey != null) { if (Objects.equals(sortKey, "regionname")) {
if (sortKey.equals("readrequest")) { Collections.sort(entryList, (entry1, entry2) -> {
Collections.sort(entryList, (entry1, entry2) -> { if (entry1 == null || entry1.getValue() == null) {
if (entry1 == null || entry1.getValue() == null) { return -1;
return -1; } else if (entry2 == null || entry2.getValue() == null) {
} else if (entry2 == null || entry2.getValue() == null) { return 1;
return 1; }
} RegionInfo regionInfo1 = entry1.getKey();
int result = Long.compare(entry1.getValue().getReadRequestCount(), RegionInfo regionInfo2 = entry2.getKey();
entry2.getValue().getReadRequestCount()); String name1 = showWhole ? Bytes.toStringBinary(regionInfo1.getRegionName())
if (reverseOrder) { : regionInfo1.getEncodedName();
result = -1 * result; String name2 = showWhole ? Bytes.toStringBinary(regionInfo2.getRegionName())
} : regionInfo2.getEncodedName();
return result; return name1.compareTo(name2);
}); });
} else if (sortKey.equals("writerequest")) { } else if (Objects.equals(sortKey, "readrequest")) {
Collections.sort(entryList, (entry1, entry2) -> { Collections.sort(entryList, (entry1, entry2) -> {
if (entry1 == null || entry1.getValue() == null) { if (entry1 == null || entry1.getValue() == null) {
return -1; return -1;
} else if (entry2 == null || entry2.getValue() == null) { } else if (entry2 == null || entry2.getValue() == null) {
return 1; return 1;
} }
int result = Long.compare(entry1.getValue().getWriteRequestCount(), return Long.compare(entry1.getValue().getReadRequestCount(),
entry2.getValue().getWriteRequestCount()); entry2.getValue().getReadRequestCount());
if (reverseOrder) { });
result = -1 * result; } else if (Objects.equals(sortKey, "writerequest")) {
} Collections.sort(entryList, (entry1, entry2) -> {
return result; if (entry1 == null || entry1.getValue() == null) {
}); return -1;
} else if (sortKey.equals("size")) { } else if (entry2 == null || entry2.getValue() == null) {
Collections.sort(entryList, (entry1, entry2) -> { return 1;
if (entry1 == null || entry1.getValue() == null) { }
return -1; return Long.compare(entry1.getValue().getWriteRequestCount(),
} else if (entry2 == null || entry2.getValue() == null) { entry2.getValue().getWriteRequestCount());
return 1; });
} } else if (Objects.equals(sortKey, "size")) {
int result = Double.compare(entry1.getValue().getStoreFileSize().get(), Collections.sort(entryList, (entry1, entry2) -> {
entry2.getValue().getStoreFileSize().get()); if (entry1 == null || entry1.getValue() == null) {
if (reverseOrder) { return -1;
result = -1 * result; } else if (entry2 == null || entry2.getValue() == null) {
} return 1;
return result; }
}); return Double.compare(entry1.getValue().getStoreFileSize().get(),
} else if (sortKey.equals("filecount")) { entry2.getValue().getStoreFileSize().get());
Collections.sort(entryList, (entry1, entry2) -> { });
if (entry1 == null || entry1.getValue() == null) { } else if (Objects.equals(sortKey, "filecount")) {
return -1; Collections.sort(entryList, (entry1, entry2) -> {
} else if (entry2 == null || entry2.getValue() == null) { if (entry1 == null || entry1.getValue() == null) {
return 1; return -1;
} } else if (entry2 == null || entry2.getValue() == null) {
int result = Integer.compare(entry1.getValue().getStoreCount(), return 1;
entry2.getValue().getStoreCount()); }
if (reverseOrder) { return Integer.compare(entry1.getValue().getStoreCount(),
result = -1 * result; entry2.getValue().getStoreCount());
} });
return result; } else if (Objects.equals(sortKey, "memstore")) {
}); Collections.sort(entryList, (entry1, entry2) -> {
} else if (sortKey.equals("memstore")) { if (entry1 == null || entry1.getValue() == null) {
Collections.sort(entryList, (entry1, entry2) -> { return -1;
if (entry1 == null || entry1.getValue() == null) { } else if (entry2 == null || entry2.getValue() == null) {
return -1; return 1;
} else if (entry2 == null || entry2.getValue() == null) { }
return 1; return Double.compare(entry1.getValue().getMemStoreSize().get(),
} entry2.getValue().getMemStoreSize().get());
int result = Double.compare(entry1.getValue().getMemStoreSize().get(), });
entry2.getValue().getMemStoreSize().get()); } else if (Objects.equals(sortKey, "locality")) {
if (reverseOrder) { Collections.sort(entryList, (entry1, entry2) -> {
result = -1 * result; if (entry1 == null || entry1.getValue() == null) {
} return -1;
return result; } else if (entry2 == null || entry2.getValue() == null) {
}); return 1;
} else if (sortKey.equals("locality")) { }
Collections.sort(entryList, (entry1, entry2) -> { return Double.compare(entry1.getValue().getDataLocality(),
if (entry1 == null || entry1.getValue() == null) { entry2.getValue().getDataLocality());
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 (reverseOrder) {
Collections.reverse(entryList);
}
numRegions = regions.size(); numRegions = regions.size();
int numRegionsRendered = 0; int numRegionsRendered = 0;
// render all regions // render all regions
@ -838,7 +833,7 @@ if(showWhole=='true')document.getElementById("showWhole").checked=true;
function reloadAsSort(){ function reloadAsSort(){
var url="?name="+'<%= URLEncoder.encode(fqtn) %>'; 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; url=url+"&sort="+document.getElementById("sel").value;
} }
if(document.getElementById("ascending").checked){ if(document.getElementById("ascending").checked){