[ https://issues.apache.org/jira/browse/ZOOKEEPER-1750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13762782#comment-13762782 ]
Rakesh R commented on ZOOKEEPER-1750: ------------------------------------- Thanks [~michi009] for the interest. Hi, I think there is potential problem in the test case assertion which I done in the patch. {code} String cnxnStr = serverCnxn.toString(); serverCnxn.close(); Assert.assertEquals("Connection mismatches!", cnxnStr, serverCnxn.toString()); {code} NIOServerCnxn#toString is using 'sock.socket().getRemoteSocketAddress()' and this api is returning 'null' randomly. I think we should change it like: {code} try { serverCnxn.toString(); } catch (Exception e) { Assert.fail("Shouldn't throw exception while getting connection details"); } {code} I could see its committed in trunk version. Could you please help to change this, otw it may leads random failures. Whats the approach to do the necessary changes? > Race condition producing NPE in NIOServerCnxn.toString > ------------------------------------------------------ > > Key: ZOOKEEPER-1750 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1750 > Project: ZooKeeper > Issue Type: Bug > Components: server > Affects Versions: 3.5.0 > Reporter: Helen Hastings > Assignee: Rakesh R > Priority: Minor > Fix For: 3.5.0 > > Attachments: 0001-ZOOKEEPER-1750-trunk-version.patch, > 0002-ZOOKEEPER-1750-trunk-version.patch > > > The socket is closed and the variable "sock" is set to null for normal > reasons, but the toString method is called before "sock" can be set again, > producing a NullPointerException. > Stack trace: > 2013-08-29 01:49:19,991 6277 [CommitProcWorkThread-3] WARN > org.apache.zookeeper.server.WorkerService - Unexpected exception > java.lang.NullPointerException > at > org.apach.zookeeper.server.NIOServerCnxn.toString(NIOServerCnxn.java:961) > at java.lang.String.valueOf(String.java:2854) > at java.lang.StringBuilder.append(StringBuilder.java:128) > at > org.apache.zookeeper.server.NIOServerCnxn.process(NIOServerCnxn.java:1104) > at > org.apache.zookeeper.server.WatchManager.triggerWatch(WatchManager.java:120) > at > org.apache.zookeeper.server.WatchManager.triggerWatch(WatchManager.java:92) > at org.apache.zookeeper.server.DataTree.createNode(DataTree.java:544) > at org.apache.zookeeper.server.DataTree.processTxn(DataTree.java:805) > at org.apache.zookeeper.server.ZKDatabase.processTxn(ZKDatabase.java:319) > at > org.apache.zookeeper.server.ZooKeeperServer.processTxn(ZooKeeperServer.java:967) > at > org.apache.zookeeper.server.FinalRequestProcessor.processRequest(FinalRequestProcessor.java:115) > at > org.apache.zookeeper.server.quorum.Leader$ToBeAppliedRequestProcessor.processRequest(Leader.java:859) > at > org.apache.zookeeper.server.quorum.CommitProcessor$CommitWorkRequest.doWork(CommitProcessor.java:271) > at > org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:152) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:722) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira