From 0a72d2215df59b6156422a99cab40e1788c6b74e Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Wed, 13 Jul 2022 10:32:01 +0800 Subject: [PATCH] HBASE-27193 TestZooKeeper is flaky (#4615) Signed-off-by: Guanghao Zhang (cherry picked from commit 2662607b716bab12d5f01de013ba3349cff0d78c) --- .../test/java/org/apache/hadoop/hbase/TestZooKeeper.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java index e774b6eb9b6..33853f61d1c 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java @@ -193,9 +193,15 @@ public class TestZooKeeper { m.getZooKeeper().close(); MockLoadBalancer.retainAssignCalled = false; final int expectedNumOfListeners = countPermanentListeners(zkw); + // the master could already been aborted by some background tasks but here we call abort + // directly to make sure this will happen m.abort("Test recovery from zk session expired", new KeeperException.SessionExpiredException()); - assertTrue(m.isStopped()); // Master doesn't recover any more + // it is possible that our abort call above returned earlier because of someone else has + // already called abort, but it is possible that it has not finished the abort call yet so the + // isStopped flag is still false, let's wait for sometime. + TEST_UTIL.waitFor(5000, () -> m.isStopped()); // Master doesn't recover any more + // The recovered master should not call retainAssignment, as it is not a // clean startup. assertFalse("Retain assignment should not be called", MockLoadBalancer.retainAssignCalled);