diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java index 239f97b0f70..20e8e2cddd2 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java @@ -1319,7 +1319,7 @@ public synchronized void register(Watcher watcher) { * @throws InterruptedException */ public synchronized void close() throws InterruptedException { - if (!cnxn.getState().isAlive()) { + if (cnxn.getState() == States.CLOSED) { LOG.debug("Close called on already closed client"); return; } diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java index 2384cd612ef..3f586c247d3 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java @@ -18,11 +18,14 @@ package org.apache.zookeeper.test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher.Event.KeeperState; @@ -88,9 +91,12 @@ public void testAuthFail() { @Test public void testBadSaslAuthNotifiesWatch() throws Exception { - try (ZooKeeper ignored = createClient(new MyWatcher(), hostPort)) { + try (ZooKeeper zk = createClient(new MyWatcher(), hostPort)) { // wait for authFailed event from client's EventThread. - authFailed.await(); + assertTrue(authFailed.await(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS)); + zk.close(); + assertEquals(ZooKeeper.States.CLOSED, zk.getState()); + assertTrue(zk.close(CONNECTION_TIMEOUT)); } }