From 09c90dc0801b9dc1d4427be144e81819da230eea Mon Sep 17 00:00:00 2001 From: maoling Date: Fri, 24 Aug 2018 18:21:04 +0800 Subject: [PATCH] ZOOKEEPER-2913:testEphemeralNodeDeletion is flaky --- .../quorum/EphemeralNodeDeletionTest.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/java/test/org/apache/zookeeper/server/quorum/EphemeralNodeDeletionTest.java b/src/java/test/org/apache/zookeeper/server/quorum/EphemeralNodeDeletionTest.java index 9edb4be69f5..9546c25cc79 100644 --- a/src/java/test/org/apache/zookeeper/server/quorum/EphemeralNodeDeletionTest.java +++ b/src/java/test/org/apache/zookeeper/server/quorum/EphemeralNodeDeletionTest.java @@ -24,7 +24,10 @@ import java.io.IOException; import java.net.SocketTimeoutException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import org.apache.zookeeper.AsyncCallback; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.PortAssignment; import org.apache.zookeeper.ZooDefs.Ids; @@ -147,7 +150,11 @@ public TestQPMain getTestQPMain() { // close the session and newly created ephemeral node should be deleted zk.close(); - + + SyncCallback cb = new SyncCallback(); + followerZK.sync(nodePath, cb, null); + cb.sync.await(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS); + nodeAtFollower = followerZK.exists(nodePath, false); // Problem 2: Before fix, after session close the ephemeral node @@ -225,4 +232,13 @@ protected QuorumPeer getQuorumPeer() throws SaslException { return new CustomQuorumPeer(); } } + + private static class SyncCallback implements AsyncCallback.VoidCallback { + private final CountDownLatch sync = new CountDownLatch(1); + + @Override + public void processResult(int rc, String path, Object ctx) { + sync.countDown(); + } + } }