Return-Path: X-Original-To: apmail-hbase-commits-archive@www.apache.org Delivered-To: apmail-hbase-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 96ACE10F77 for ; Thu, 18 Dec 2014 19:31:24 +0000 (UTC) Received: (qmail 60326 invoked by uid 500); 18 Dec 2014 19:31:24 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 60275 invoked by uid 500); 18 Dec 2014 19:31:24 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 60262 invoked by uid 99); 18 Dec 2014 19:31:24 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Dec 2014 19:31:24 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 21D8B957CE6; Thu, 18 Dec 2014 19:31:24 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: virag@apache.org To: commits@hbase.apache.org Date: Thu, 18 Dec 2014 19:31:24 -0000 Message-Id: <96ecc0239025415b82ba089a251238f1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] hbase git commit: HBASE-12694 testTableExistsIfTheSpecifiedTableRegionIsSplitParent in TestSplitTransactionOnCluster class leaves regions in transition (Vandana Ayyalasomayajula) Repository: hbase Updated Branches: refs/heads/branch-1 effbe8588 -> 7fbee896f refs/heads/master 9ae615f82 -> 3caae6239 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/7fbee896 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7fbee896 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7fbee896 Branch: refs/heads/branch-1 Commit: 7fbee896f488405bc883a533f842c77422dee18d Parents: effbe85 Author: Virag Kothari Authored: Thu Dec 18 11:29:02 2014 -0800 Committer: Virag Kothari Committed: Thu Dec 18 11:29:02 2014 -0800 ---------------------------------------------------------------------- .../hbase/regionserver/SplitTransaction.java | 2 +- .../TestSplitTransactionOnCluster.java | 42 +++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/7fbee896/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 06e726f..5215433 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 @@ -94,7 +94,7 @@ public class SplitTransaction { private HRegionInfo hri_b; private long fileSplitTimeout = 30000; public SplitTransactionCoordination.SplitTransactionDetails std; - boolean useZKForAssignment; + boolean useZKForAssignment = true; /* * Row to split around http://git-wip-us.apache.org/repos/asf/hbase/blob/7fbee896/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 99de513..84e7d26 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 @@ -47,6 +47,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; @@ -306,7 +307,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() { @@ -372,13 +376,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 ctx, byte[] splitKey, List 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 ctx) + throws IOException { + postSplit.countDown(); + LOG.info("postCompleteSplit called"); + } } /** @@ -917,10 +934,20 @@ public class TestSplitTransactionOnCluster { tableExists = MetaTableAccessor.tableExists(regionServer.getConnection(), tableName); assertEquals("The specified table should present.", true, tableExists); + Map rit = cluster.getMaster().getAssignmentManager().getRegionStates() + .getRegionsInTransition(); + assertTrue(rit.size() == 3); + cluster.getMaster().getAssignmentManager().regionOffline(st.getFirstDaughter()); + cluster.getMaster().getAssignmentManager().regionOffline(st.getSecondDaughter()); + cluster.getMaster().getAssignmentManager().regionOffline(region.getRegionInfo()); + rit = cluster.getMaster().getAssignmentManager().getRegionStates() + .getRegionsInTransition(); + assertTrue(rit.size() == 0); } finally { admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); t.close(); + TESTING_UTIL.deleteTable(tableName); } } @@ -1164,7 +1191,7 @@ public class TestSplitTransactionOnCluster { } } - @Test + @Test(timeout = 120000) public void testFailedSplit() throws Exception { TableName tableName = TableName.valueOf("testFailedSplit"); byte[] colFamily = Bytes.toBytes("info"); @@ -1181,18 +1208,23 @@ public class TestSplitTransactionOnCluster { // The following split would fail. admin.split(tableName); - 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() { @Override public boolean evaluate() throws Exception { RegionStates regionStates = cluster.getMaster().getAssignmentManager().getRegionStates(); Map 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(); connection.close();