From ab722fe765524d29b9c234d204056ade39b6a4ef Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Fri, 1 Jul 2022 22:09:01 +0800 Subject: [PATCH] HBASE-27169 TestSeparateClientZKCluster is flaky (#4587) Signed-off-by: Xin Sun (cherry picked from commit 03c23beb57e5927d2244a00b66ce6fa3148aa84b) --- .../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 e6f127852696..6b9cd1ffa0ce 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.HBaseTestingUtility; @@ -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(false)); + waitForNewMasterUpAndAddressSynced(admin); } }