From 06d3cbab3e32a5b9451f7b06a1b09b284f6930f9 Mon Sep 17 00:00:00 2001 From: Dima Spivak Date: Tue, 21 Oct 2014 11:34:26 -0700 Subject: [PATCH] HBASE-12312 Another couple of createTable race conditions --- .../java/org/apache/hadoop/hbase/HBaseTestingUtility.java | 15 ++++++++++++++- .../hadoop/hbase/replication/TestReplicationBase.java | 10 ++++------ .../hbase/security/access/TestAccessController.java | 4 ++++ .../hbase/security/access/TestScanEarlyTermination.java | 3 +-- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index 450e805..2f5ee99 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -1215,10 +1215,23 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { */ public HTable createTable(HTableDescriptor htd, byte[][] splitRows) throws IOException { + return createTable(htd, getConfiguration(), splitRows); + } + + /** + * Create a table. + * @param htd + * @param c + * @param splitRows + * @return An HTable instance for the created table. + * @throws IOException + */ + public HTable createTable(HTableDescriptor htd, Configuration c, byte[][] splitRows) + throws IOException { getHBaseAdmin().createTable(htd, splitRows); // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are assigned waitUntilAllRegionsAssigned(htd.getTableName()); - return new HTable(getConfiguration(), htd.getTableName()); + return new HTable(c, htd.getTableName()); } /** diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java index 9fe2e0b..082f319 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java @@ -136,13 +136,11 @@ public class TestReplicationBase { table.addFamily(fam); fam = new HColumnDescriptor(noRepfamName); table.addFamily(fam); - Admin admin1 = new HBaseAdmin(conf1); - Admin admin2 = new HBaseAdmin(conf2); - admin1.createTable(table, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE); - admin2.createTable(table, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE); - htable1 = new HTable(conf1, tableName); + htable1 = utility1.createTable(table, conf1, + HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE); htable1.setWriteBufferSize(1024); - htable2 = new HTable(conf2, tableName); + htable2 = utility2.createTable(table, conf2, + HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE); } /** diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java index 4cf32a6..b9ecc12 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java @@ -1050,6 +1050,7 @@ public class TestAccessController extends SecureTestUtil { htd.addFamily(new HColumnDescriptor(family1)); htd.addFamily(new HColumnDescriptor(family2)); admin.createTable(htd); + TEST_UTIL.waitUntilAllRegionsAssigned(tableName); // create temp users User tblUser = User @@ -1324,6 +1325,7 @@ public class TestAccessController extends SecureTestUtil { htd.addFamily(new HColumnDescriptor(family1)); htd.addFamily(new HColumnDescriptor(family2)); admin.createTable(htd); + TEST_UTIL.waitUntilAllRegionsAssigned(tableName); // create temp users User user = User.createUserForTesting(TEST_UTIL.getConfiguration(), "user", new String[0]); @@ -1439,6 +1441,7 @@ public class TestAccessController extends SecureTestUtil { htd.addFamily(new HColumnDescriptor(family2)); htd.setOwner(USER_OWNER); admin.createTable(htd); + TEST_UTIL.waitUntilAllRegionsAssigned(tableName); List perms; @@ -1974,6 +1977,7 @@ public class TestAccessController extends SecureTestUtil { HTableDescriptor htd = new HTableDescriptor(TEST_TABLE2); htd.addFamily(new HColumnDescriptor(TEST_FAMILY)); admin.createTable(htd); + TEST_UTIL.waitUntilAllRegionsAssigned(TEST_TABLE2); // Starting a new RegionServer. JVMClusterUtil.RegionServerThread newRsThread = hbaseCluster diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestScanEarlyTermination.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestScanEarlyTermination.java index f4b3882..7b53a37 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestScanEarlyTermination.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestScanEarlyTermination.java @@ -128,8 +128,7 @@ public class TestScanEarlyTermination extends SecureTestUtil { htd.setConfiguration(AccessControlConstants.CF_ATTRIBUTE_EARLY_OUT, "true"); admin.createTable(htd); - - TEST_UTIL.waitTableEnabled(TEST_TABLE.getTableName()); + TEST_UTIL.waitUntilAllRegionsAssigned(TEST_TABLE.getTableName()); } @After -- 1.9.3 (Apple Git-50)