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:11 UTC
[3/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
Conflicts:
hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/0ebcd11d
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0ebcd11d
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0ebcd11d
Branch: refs/heads/branch-1.3
Commit: 0ebcd11da0bfc83cc73026c477e78266911f24bf
Parents: a2ea72d
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:07:27 2018 -0700
----------------------------------------------------------------------
.../apache/hadoop/hbase/util/TestHBaseFsck.java | 46 +++++++++++++-------
1 file changed, 31 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/0ebcd11d/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 9b628ee..df06970 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
@@ -66,13 +66,14 @@ 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.testclassification.LargeTests;
+import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.RegionLocations;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.MetaTableAccessor;
+import org.apache.hadoop.hbase.TableExistsException;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
+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 +98,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 +116,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.ReplicationQueues;
import org.apache.hadoop.hbase.testclassification.LargeTests;
@@ -123,8 +127,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;
@@ -1923,7 +1927,7 @@ public class TestHBaseFsck {
*/
@Test (timeout=180000)
public void testValidLingeringSplitParent() throws Exception {
- TableName table =
+ final TableName table =
TableName.valueOf("testLingeringSplitParent");
Table meta = null;
try {
@@ -1937,10 +1941,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
@@ -1966,6 +1967,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)
@@ -1988,11 +2008,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)));