From 688877606b10d80e4dede3c30deb4e922ad09a5a Mon Sep 17 00:00:00 2001 From: stack Date: Wed, 16 Jul 2014 13:53:20 -0700 Subject: [PATCH] HBASE-11517 TestReplicaWithCluster turns zombie (Mikhail Antonov) --- .../hbase/client/TestReplicaWithCluster.java | 68 ++++++++----------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java index 2c1f52b28b5..3b6c71fffed 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java @@ -65,6 +65,9 @@ public class TestReplicaWithCluster { private static final int NB_SERVERS = 2; private static final byte[] row = TestReplicaWithCluster.class.getName().getBytes(); private static final HBaseTestingUtility HTU = new HBaseTestingUtility(); + + // second minicluster used in testing of replication + private static HBaseTestingUtility HTU2; private static final byte[] f = HConstants.CATALOG_FAMILY; private final static int REFRESH_PERIOD = 1000; @@ -126,6 +129,7 @@ public class TestReplicaWithCluster { @AfterClass public static void afterClass() throws Exception { + HTU2.shutdownMiniCluster(); HTU.shutdownMiniCluster(); } @@ -210,17 +214,13 @@ public class TestReplicaWithCluster { HTU.getHBaseCluster().stopMaster(0); HBaseAdmin admin = new HBaseAdmin(HTU.getConfiguration()); - try { - nHdt = admin.getTableDescriptor(hdt.getTableName()); - Assert.assertEquals("fams=" + Arrays.toString(nHdt.getColumnFamilies()), + nHdt =admin.getTableDescriptor(hdt.getTableName()); + Assert.assertEquals("fams=" + Arrays.toString(nHdt.getColumnFamilies()), bHdt.getColumnFamilies().length + 1, nHdt.getColumnFamilies().length); - admin.disableTable(hdt.getTableName()); - admin.deleteTable(hdt.getTableName()); - HTU.getHBaseCluster().startMaster(); - } finally { - if (admin != null) admin.close(); - } + admin.disableTable(hdt.getTableName()); + admin.deleteTable(hdt.getTableName()); + HTU.getHBaseCluster().startMaster(); } @Test (timeout=30000) @@ -239,30 +239,27 @@ public class TestReplicaWithCluster { conf2.set(HConstants.HBASE_CLIENT_INSTANCE_ID, String.valueOf(-1)); conf2.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/2"); MiniZooKeeperCluster miniZK = HTU.getZkCluster(); - HBaseTestingUtility HTU2 = new HBaseTestingUtility(conf2); + + HTU2 = new HBaseTestingUtility(conf2); HTU2.setZkCluster(miniZK); HTU2.startMiniCluster(NB_SERVERS); LOG.info("Setup second Zk"); HTU2.getHBaseAdmin().createTable(hdt, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE); ReplicationAdmin admin = new ReplicationAdmin(HTU.getConfiguration()); - try { - admin.addPeer("2", HTU2.getClusterKey()); - } finally { - if (admin != null) admin.close(); - } + admin.addPeer("2", HTU2.getClusterKey()); Put p = new Put(row); p.add(row, row, row); final HTable table = new HTable(HTU.getConfiguration(), hdt.getTableName()); - try { - table.put(p); - HTU.getHBaseAdmin().flush(table.getTableName()); - LOG.info("Put & flush done on the first cluster. Now doing a get on the same cluster."); + table.put(p); - Waiter.waitFor(HTU.getConfiguration(), 1000, new Waiter.Predicate() { - @Override - public boolean evaluate() throws Exception { + HTU.getHBaseAdmin().flush(table.getTableName()); + LOG.info("Put & flush done on the first cluster. Now doing a get on the same cluster."); + + Waiter.waitFor(HTU.getConfiguration(), 1000, new Waiter.Predicate() { + @Override + public boolean evaluate() throws Exception { try { SlowMeCopro.cdl.set(new CountDownLatch(1)); Get g = new Get(row); @@ -273,18 +270,15 @@ public class TestReplicaWithCluster { } finally { SlowMeCopro.cdl.get().countDown(); SlowMeCopro.sleepTime.set(0); - } - }}); - } finally { - if (table != null) table.close(); - } + } } + }); + LOG.info("stale get on the first cluster done. Now for the second."); final HTable table2 = new HTable(HTU.getConfiguration(), hdt.getTableName()); - try { - Waiter.waitFor(HTU.getConfiguration(), 1000, new Waiter.Predicate() { - @Override - public boolean evaluate() throws Exception { + Waiter.waitFor(HTU.getConfiguration(), 1000, new Waiter.Predicate() { + @Override + public boolean evaluate() throws Exception { try { SlowMeCopro.cdl.set(new CountDownLatch(1)); Get g = new Get(row); @@ -295,11 +289,8 @@ public class TestReplicaWithCluster { } finally { SlowMeCopro.cdl.get().countDown(); SlowMeCopro.sleepTime.set(0); - } - }}); - } finally { - if (table2 != null) table2.close(); - } + } } + }); HTU.getHBaseAdmin().disableTable(hdt.getTableName()); HTU.deleteTable(hdt.getTableName()); @@ -307,10 +298,11 @@ public class TestReplicaWithCluster { HTU2.getHBaseAdmin().disableTable(hdt.getTableName()); HTU2.deleteTable(hdt.getTableName()); - HTU2.shutdownMiniCluster(); + // We shutdown HTU2 minicluster later, in afterClass(), as shutting down + // the minicluster has negative impact of deleting all HConnections in JVM. } - @Test + @Test (timeout=30000) public void testBulkLoad() throws IOException { // Create table then get the single region for our new table. LOG.debug("Creating test table");