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)));