You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Paul Millar (JIRA)" <ji...@apache.org> on 2017/06/19 07:52:00 UTC

[jira] [Created] (ZOOKEEPER-2812) Racy implicit SessionTracker creation

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)