This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new e631798 HBASE-22970 split parents show as overlaps in the HBCK Report
e631798 is described below
commit e631798961254997ea5ed91e1dfe1d0d75d5c231
Author: stack <[email protected]>
AuthorDate: Tue Sep 3 14:48:04 2019 -0700
HBASE-22970 split parents show as overlaps in the HBCK Report
Check if overlap is split parent.
Cleaned up the HBCK Report page too with some notes that it is made of
two reports; have the two sections display the same.
---
.../org/apache/hadoop/hbase/client/RegionInfo.java | 4 +--
.../main/resources/hbase-webapps/master/hbck.jsp | 37 ++++++++++++++--------
.../hadoop/hbase/regionserver/TestHRegionInfo.java | 7 ++++
3 files changed, 32 insertions(+), 16 deletions(-)
diff --git
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
index f2829e8..8056900 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
@@ -799,11 +799,11 @@ public interface RegionInfo {
}
int startKeyCompare = Bytes.compareTo(getStartKey(), other.getStartKey());
if (startKeyCompare == 0) {
- return true;
+ return !this.isSplitParent();
}
if (startKeyCompare < 0) {
if (isLast()) {
- return true;
+ return !this.isSplitParent();
}
return Bytes.compareTo(getEndKey(), other.getStartKey()) > 0;
}
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
b/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
index a003e5f..6ae5d68 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
@@ -78,25 +78,30 @@
<div class="row">
<div class="page-header">
+ <p><span>This page displays two reports. Only the report titles show if
reports are empty.</span></p>
+ </div>
+ </div>
+ <div class="row">
+ <div class="page-header">
<h1>HBCK Chore Report</h1>
<p>
<% if (hbckChore.isDisabled()) { %>
<span>HBCK chore is currently disabled. Set
hbase.master.hbck.chore.interval > 0 in the config & do a rolling-restart to
enable it.</span>
<% } else { %>
- <span>Checking started at <%= iso8601start %> and generated report at
<%= iso8601end %>. Execute 'hbck_chore_run' in hbase shell to generate a new
sub-report.</span>
+ <span>Checking started at <%= iso8601start %> and generated report at
<%= iso8601end %>. Execute <i>hbck_chore_run</i> in hbase shell to generate a
new sub-report.</span>
<% } %>
</p>
</div>
</div>
+
+ <% if (inconsistentRegions != null && inconsistentRegions.size() > 0) { %>
<div class="row">
<div class="page-header">
<h2>Inconsistent Regions</h2>
</div>
</div>
-
- <% if (inconsistentRegions != null && inconsistentRegions.size() > 0) { %>
<p>
<span>
There are three cases: 1. Master thought this region opened, but no
regionserver reported it (Fix: use assigns
@@ -127,13 +132,13 @@
</table>
<% } %>
+ <% if (orphanRegionsOnRS != null && orphanRegionsOnRS.size() > 0) { %>
<div class="row">
<div class="page-header">
<h2>Orphan Regions on RegionServer</h2>
</div>
</div>
- <% if (orphanRegionsOnRS != null && orphanRegionsOnRS.size() > 0) { %>
<table class="table table-striped">
<tr>
<th>Region Encoded Name</th>
@@ -150,13 +155,13 @@
</table>
<% } %>
+ <% if (orphanRegionsOnFS != null && orphanRegionsOnFS.size() > 0) { %>
<div class="row">
<div class="page-header">
<h2>Orphan Regions on FileSystem</h2>
</div>
</div>
- <% if (orphanRegionsOnFS != null && orphanRegionsOnFS.size() > 0) { %>
<table class="table table-striped">
<tr>
<th>Region Encoded Name</th>
@@ -173,20 +178,24 @@
</table>
<% } %>
+ <%
+ zdt =
ZonedDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()),
+ ZoneId.systemDefault());
+ String iso8601Now = zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
+ String iso8601reportTime = "-1";
+ if (report != null) {
+ zdt =
ZonedDateTime.ofInstant(Instant.ofEpochMilli(report.getCreateTime()),
+ ZoneId.systemDefault());
+ iso8601reportTime = zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
+ }
+ %>
<div class="row inner_header">
<div class="page-header">
<h1>CatalogJanitor <em>hbase:meta</em> Consistency Issues</h1>
+ <p><span>Report created: <%= iso8601reportTime %> (now=<%= iso8601Now
%>). Run <i>catalogjanitor_run</i> in hbase shell to generate a new
sub-report.</span></p>
</div>
</div>
- <% if (report != null && !report.isEmpty()) {
- zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(report.getCreateTime()),
- ZoneId.systemDefault());
- String iso8601reportTime =
zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
- zdt =
ZonedDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()),
- ZoneId.systemDefault());
- String iso8601Now = zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
- %>
- <p>Report created: <%= iso8601reportTime %> (now=<%= iso8601Now %>). Run
<i>catalogjanitor_run</i> in hbase shell to generate a new sub-report.</p>
+ <% if (report != null && !report.isEmpty()) { %>
<% if (!report.getHoles().isEmpty()) { %>
<div class="row inner_header">
<div class="page-header">
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionInfo.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionInfo.java
index 6b03775..f8b0b80 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionInfo.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionInfo.java
@@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.RegionInfoBuilder;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.testclassification.RegionServerTests;
@@ -124,6 +125,12 @@ public class TestHRegionInfo {
assertTrue(abri.isOverlap(adri));
assertFalse(dri.isOverlap(ari));
assertTrue(abri.isOverlap(adri));
+ assertTrue(adri.isOverlap(abri));
+ // Check that splitParent is not reported as an overlap.
+ RegionInfo splitParent = RegionInfoBuilder.newBuilder(adri.getTable()).
+
setStartKey(adri.getStartKey()).setEndKey(adri.getEndKey()).setOffline(true).
+ setSplit(true).build();
+ assertFalse(splitParent.isOverlap(abri));
}
@Test