summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColvin Cowie <51863265+colvinco@users.noreply.github.com>2023-02-27 14:41:01 +0000
committerGitHub <noreply@github.com>2023-02-27 15:41:01 +0100
commitde8768807fc7a3fcabc9762b033cf59e695cf14b (patch)
tree7d6249ca84aa07f0b18804f03b05ca111e10aaea
parenta9517d88605ed61fed8f3dfdc2f5a04dfbcee1f8 (diff)
downloadzookeeper-de8768807fc7a3fcabc9762b033cf59e695cf14b.tar.gz
ZOOKEEPER-4296: Add null checks to ClientCnxnSocketNetty onClosing (#1697)
Co-authored-by: Colvin Cowie <COLVINCO@uk.ibm.com>
-rwxr-xr-xzookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxnSocketNetty.java8
-rw-r--r--zookeeper-server/src/test/java/org/apache/zookeeper/ClientCnxnSocketTest.java10
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();
+ }
}