You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2018/08/28 18:41:10 UTC

[2/3] hbase git commit: Amend HBASE-20940 HStore.cansplit should not allow split to happen if it has references (Vishal Khandelwal)

Amend HBASE-20940 HStore.cansplit should not allow split to happen if it has references (Vishal Khandelwal)

Fix TestHBaseFsck failure


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b6cc5d80
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b6cc5d80
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b6cc5d80

Branch: refs/heads/branch-1.4
Commit: b6cc5d8078225acac8cb0237d7b216d7d077ea62
Parents: 5d5ede9
Author: Andrew Purtell <ap...@apache.org>
Authored: Tue Aug 28 11:04:08 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Aug 28 11:04:51 2018 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hbase/util/TestHBaseFsck.java | 49 ++++++++++++--------
 1 file changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/b6cc5d80/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
index 38985de..917d7d3 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
@@ -65,16 +65,12 @@ import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.TableExistsException;
-import org.apache.hadoop.hbase.io.HFileLink;
-import org.apache.hadoop.hbase.io.hfile.HFile;
-import org.apache.hadoop.hbase.io.hfile.HFileContext;
-import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
+import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
 import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.TableExistsException;
 import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.MetaTableAccessor;
+import org.apache.hadoop.hbase.Waiter.Predicate;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.ClusterConnection;
 import org.apache.hadoop.hbase.client.Connection;
@@ -97,6 +93,10 @@ import org.apache.hadoop.hbase.coprocessor.BaseMasterObserver;
 import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;
 import org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment;
 import org.apache.hadoop.hbase.coprocessor.ObserverContext;
+import org.apache.hadoop.hbase.io.HFileLink;
+import org.apache.hadoop.hbase.io.hfile.HFile;
+import org.apache.hadoop.hbase.io.hfile.HFileContext;
+import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;
 import org.apache.hadoop.hbase.io.hfile.TestHFile;
 import org.apache.hadoop.hbase.master.AssignmentManager;
 import org.apache.hadoop.hbase.master.HMaster;
@@ -111,7 +111,6 @@ import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
 import org.apache.hadoop.hbase.regionserver.SplitTransactionImpl;
-import org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction;
 import org.apache.hadoop.hbase.replication.ReplicationFactory;
 import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
 import org.apache.hadoop.hbase.replication.ReplicationQueues;
@@ -124,8 +123,8 @@ import org.apache.hadoop.hbase.util.HBaseFsck.TableInfo;
 import org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker;
 import org.apache.hadoop.hbase.util.hbck.HbckTestingUtil;
 import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
 import org.apache.hadoop.hbase.zookeeper.ZKAssign;
+import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
 import org.apache.zookeeper.KeeperException;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -1914,7 +1913,7 @@ public class TestHBaseFsck {
    */
   @Test (timeout=180000)
   public void testValidLingeringSplitParent() throws Exception {
-    TableName table =
+    final TableName table =
         TableName.valueOf("testLingeringSplitParent");
     Table meta = null;
     try {
@@ -1928,10 +1927,7 @@ public class TestHBaseFsck {
       meta = connection.getTable(TableName.META_TABLE_NAME, tableExecutorService);
       HRegionInfo hri = location.getRegionInfo();
 
-      // do a regular split
-      byte[] regionName = location.getRegionInfo().getRegionName();
-      admin.splitRegion(location.getRegionInfo().getRegionName(), Bytes.toBytes("BM"));
-      TestEndToEndSplitTransaction.blockUntilRegionSplit(conf, 60000, regionName, true);
+      splitAndWait(table, location);
 
       // TODO: fixHdfsHoles does not work against splits, since the parent dir lingers on
       // for some time until children references are deleted. HBCK erroneously sees this as
@@ -1957,6 +1953,25 @@ public class TestHBaseFsck {
     }
   }
 
+  private byte[] splitAndWait(final TableName table, HRegionLocation location)
+      throws IOException, Exception {
+
+    // do a regular split
+    final List<HRegion> regions = TEST_UTIL.getMiniHBaseCluster().getRegions(table);
+    byte[] regionName = location.getRegionInfo().getRegionName();
+    admin.splitRegion(location.getRegionInfo().getRegionName(), Bytes.toBytes("BM"));
+    TEST_UTIL.waitFor(60000, new Predicate<Exception>() {
+      @Override
+      public boolean evaluate() throws Exception {
+        List<HRegion> regions1 = TEST_UTIL.getMiniHBaseCluster().getRegions(table);
+        regions1.removeAll(regions);
+        return regions1.size() == 2;
+      }
+    });
+
+    return regionName;
+  }
+
   /**
    * Split crashed after write to hbase:meta finished for the parent region, but
    * failed to write daughters (pre HBASE-7721 codebase)
@@ -1979,11 +1994,7 @@ public class TestHBaseFsck {
       // after split.
       admin.enableCatalogJanitor(false);
 
-      // do a regular split
-      byte[] regionName = location.getRegionInfo().getRegionName();
-      admin.splitRegion(location.getRegionInfo().getRegionName(), Bytes.toBytes("BM"));
-      TestEndToEndSplitTransaction.blockUntilRegionSplit(conf, 60000, regionName, true);
-
+      byte[] regionName = splitAndWait(table, location);
       PairOfSameType<HRegionInfo> daughters =
           MetaTableAccessor.getDaughterRegions(meta.get(new Get(regionName)));