You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by vi...@apache.org on 2014/12/19 02:08:58 UTC
[3/3] hbase git commit: HBASE-12694
testTableExistsIfTheSpecifiedTableRegionIsSplitParent in
TestSplitTransactionOnCluster class leaves regions in transition (Vandana
Ayyalasomayajula)
HBASE-12694 testTableExistsIfTheSpecifiedTableRegionIsSplitParent in TestSplitTransactionOnCluster class leaves regions in transition (Vandana Ayyalasomayajula)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/51cb0fe6
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/51cb0fe6
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/51cb0fe6
Branch: refs/heads/0.98
Commit: 51cb0fe6eb3244de40dd508c9d68cb98e2ca4eca
Parents: e379fe3
Author: Virag Kothari <vi...@yahoo-inc.com>
Authored: Thu Dec 18 17:05:20 2014 -0800
Committer: Virag Kothari <vi...@yahoo-inc.com>
Committed: Thu Dec 18 17:05:20 2014 -0800
----------------------------------------------------------------------
.../hbase/regionserver/SplitTransaction.java | 2 +-
.../TestSplitTransactionOnCluster.java | 32 +++++++++++++++++---
2 files changed, 28 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/51cb0fe6/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java
index a35fd18..4618395 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransaction.java
@@ -103,7 +103,7 @@ public class SplitTransaction {
private HRegionInfo hri_b;
private long fileSplitTimeout = 30000;
private int znodeVersion = -1;
- boolean useZKForAssignment;
+ boolean useZKForAssignment = true;
/*
* Row to split around
http://git-wip-us.apache.org/repos/asf/hbase/blob/51cb0fe6/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
index b6744e0..8bf2684 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
@@ -46,6 +46,7 @@ import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.testclassification.LargeTests;
+import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.RegionTransition;
@@ -293,7 +294,10 @@ public class TestSplitTransactionOnCluster {
this.admin.split(region.getRegionName(), new byte[] {42});
// we have to wait until the SPLITTING state is seen by the master
- FailingSplitRegionObserver.latch.await();
+ FailingSplitRegionObserver observer = (FailingSplitRegionObserver) region
+ .getCoprocessorHost().findCoprocessor(FailingSplitRegionObserver.class.getName());
+ assertNotNull(observer);
+ observer.latch.await();
LOG.info("Waiting for region to come out of RIT");
TESTING_UTIL.waitFor(60000, 1000, new Waiter.Predicate<Exception>() {
@@ -312,13 +316,26 @@ public class TestSplitTransactionOnCluster {
}
public static class FailingSplitRegionObserver extends BaseRegionObserver {
- static volatile CountDownLatch latch = new CountDownLatch(1);
+ volatile CountDownLatch latch;
+ volatile CountDownLatch postSplit;
+ @Override
+ public void start(CoprocessorEnvironment e) throws IOException {
+ latch = new CountDownLatch(1);
+ postSplit = new CountDownLatch(1);
+ }
@Override
public void preSplitBeforePONR(ObserverContext<RegionCoprocessorEnvironment> ctx,
byte[] splitKey, List<Mutation> metaEntries) throws IOException {
latch.countDown();
+ LOG.info("Causing rollback of region split");
throw new IOException("Causing rollback of region split");
}
+ @Override
+ public void postCompleteSplit(ObserverContext<RegionCoprocessorEnvironment> ctx)
+ throws IOException {
+ postSplit.countDown();
+ LOG.info("postCompleteSplit called");
+ }
}
/**
@@ -1162,7 +1179,7 @@ public class TestSplitTransactionOnCluster {
return(null);
}
- @Test
+ @Test(timeout = 120000)
public void testFailedSplit() throws Exception {
TableName tableName = TableName.valueOf("testFailedSplit");
byte[] colFamily = Bytes.toBytes("info");
@@ -1178,18 +1195,23 @@ public class TestSplitTransactionOnCluster {
// The following split would fail.
admin.split(tableName.getNameAsString());
- FailingSplitRegionObserver.latch.await();
+ FailingSplitRegionObserver observer = (FailingSplitRegionObserver) actualRegion
+ .getCoprocessorHost().findCoprocessor(FailingSplitRegionObserver.class.getName());
+ assertNotNull(observer);
+ observer.latch.await();
+ observer.postSplit.await();
LOG.info("Waiting for region to come out of RIT");
TESTING_UTIL.waitFor(60000, 1000, new Waiter.Predicate<Exception>() {
@Override
public boolean evaluate() throws Exception {
RegionStates regionStates = cluster.getMaster().getAssignmentManager().getRegionStates();
Map<String, RegionState> rit = regionStates.getRegionsInTransition();
- return !rit.containsKey(actualRegion.getRegionInfo().getEncodedName());
+ return (rit.size() == 0);
}
});
regions = TESTING_UTIL.getHBaseAdmin().getTableRegions(tableName);
assertTrue(regions.size() == 1);
+ assertTrue(admin.balancer());
} finally {
table.close();
TESTING_UTIL.deleteTable(tableName);