From 93be09189ca9ba02de5a04a6c8e1f6d78e0a1c33 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Thu, 30 Jun 2022 23:15:43 +0800 Subject: [PATCH] HBASE-27169 TestSeparateClientZKCluster is flaky --- .../client/TestSeparateClientZKCluster.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java index d94fe8e39af5..54a85a4ace66 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java @@ -19,9 +19,9 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import java.io.File; +import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.HBaseTestingUtil; @@ -40,6 +40,7 @@ import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread; import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster; import org.junit.AfterClass; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Rule; @@ -100,6 +101,24 @@ public static void afterAllTests() throws Exception { FileUtils.deleteDirectory(clientZkDir); } + @Before + public void setUp() throws IOException { + try (Admin admin = TEST_UTIL.getConnection().getAdmin()) { + waitForNewMasterUpAndAddressSynced(admin); + } + } + + private void waitForNewMasterUpAndAddressSynced(Admin admin) { + TEST_UTIL.waitFor(30000, () -> { + try { + return admin.listNamespaces().length > 0; + } catch (Exception e) { + LOG.warn("failed to list namespaces", e); + return false; + } + }); + } + @Test public void testBasicOperation() throws Exception { TableName tn = name.getTableName(); @@ -139,7 +158,7 @@ public void testMasterSwitch() throws Exception { () -> cluster.getMaster() != null && cluster.getMaster().isInitialized()); LOG.info("Got master {}", cluster.getMaster().getServerName()); // confirm client access still works - assertTrue(admin.balance(BalanceRequest.defaultInstance()).isBalancerRan()); + waitForNewMasterUpAndAddressSynced(admin); } }