You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2019/09/03 21:49:51 UTC

[hbase] branch master updated: HBASE-22970 split parents show as overlaps in the HBCK Report

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

stack 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 960a5fd  HBASE-22970 split parents show as overlaps in the HBCK Report
960a5fd is described below

commit 960a5fdc2a34d2aa96dda00f37665224c2d8767c
Author: stack <st...@apache.org>
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 e66b435..d1cbd92 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
@@ -33,6 +33,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.master.RegionState;
@@ -127,6 +128,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