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)