diff options
author | Colvin Cowie <51863265+colvinco@users.noreply.github.com> | 2023-02-27 14:41:01 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-27 15:41:01 +0100 |
commit | de8768807fc7a3fcabc9762b033cf59e695cf14b (patch) | |
tree | 7d6249ca84aa07f0b18804f03b05ca111e10aaea | |
parent | a9517d88605ed61fed8f3dfdc2f5a04dfbcee1f8 (diff) | |
download | zookeeper-de8768807fc7a3fcabc9762b033cf59e695cf14b.tar.gz |
ZOOKEEPER-4296: Add null checks to ClientCnxnSocketNetty onClosing (#1697)
Co-authored-by: Colvin Cowie <COLVINCO@uk.ibm.com>
-rwxr-xr-x | zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxnSocketNetty.java | 8 | ||||
-rw-r--r-- | zookeeper-server/src/test/java/org/apache/zookeeper/ClientCnxnSocketTest.java | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxnSocketNetty.java b/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxnSocketNetty.java index df5397855..b2ca4c225 100755 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxnSocketNetty.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxnSocketNetty.java @@ -244,7 +244,9 @@ public class ClientCnxnSocketNetty extends ClientCnxnSocket { @Override void onClosing() { - firstConnect.countDown(); + if (firstConnect != null) { + firstConnect.countDown(); + } wakeupCnxn(); LOG.info("channel is told closing"); } @@ -253,7 +255,9 @@ public class ClientCnxnSocketNetty extends ClientCnxnSocket { if (needSasl.get()) { waitSasl.release(); } - outgoingQueue.add(WakeupPacket.getInstance()); + if (outgoingQueue != null) { + outgoingQueue.add(WakeupPacket.getInstance()); + } } @Override diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/ClientCnxnSocketTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/ClientCnxnSocketTest.java index e707cb332..a6e4c135d 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/ClientCnxnSocketTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/ClientCnxnSocketTest.java @@ -90,4 +90,14 @@ public class ClientCnxnSocketTest { assertEquals("Packet len " + length + " is out of range!", e.getMessage()); } } + + @Test + public void testClientCanBeClosedWhenNotInitialized() throws IOException { + ZKClientConfig clientConfig = new ZKClientConfig(); + final ClientCnxnSocketNetty clientCnxnSocket = new ClientCnxnSocketNetty(clientConfig); + // Should not throw + clientCnxnSocket.close(); + // Call onClosing explicitly since it otherwise won't be invoked without more setup. + clientCnxnSocket.onClosing(); + } } |