Paul Millar created ZOOKEEPER-2812: -------------------------------------- Summary: Racy implicit SessionTracker creation Key: ZOOKEEPER-2812 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2812 Project: ZooKeeper Issue Type: Bug Components: server Affects Versions: 3.4.8 Reporter: Paul Millar Priority: Minor
As with ZOOKEEPER-2810, NIOServerCnxnFactory#startup current starts the acceptor thread before initialising the ZooKeeperServer object. This leads to a race-condition between any incoming connection and the thread initialising the ZooKeeperServer. If the incoming connection wins the race then the thread processing this connection will see an uninitialised SessionTracker object, resulting in the following NPE being thrown: {noformat} java.lang.NullPointerException: null at org.apache.zookeeper.server.ZooKeeperServer.createSession(ZooKeeperServer.java:569) ~[zookeeper-3.4.8.jar:3.4.8--1] at org.apache.zookeeper.server.ZooKeeperServer.processConnectRequest(ZooKeeperServer.java:902) ~[zookeeper-3.4.8.jar:3.4.8--1] at org.apache.zookeeper.server.NIOServerCnxn.readConnectRequest(NIOServerCnxn.java:418) ~[zookeeper-3.4.8.jar:3.4.8--1] at org.apache.zookeeper.server.NIOServerCnxn.readPayload(NIOServerCnxn.java:198) ~[zookeeper-3.4.8.jar:3.4.8--1] at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:244) ~[zookeeper-3.4.8.jar:3.4.8--1] at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:203) ~[zookeeper-3.4.8.jar:3.4.8--1] {noformat} Again, as with ZOOKEEPER-2810, the naive fix (starting the acceptor thread last in NIOServerCnxnFactory#startup method) may fix this issue. -- This message was sent by Atlassian JIRA (v6.4.14#64029)