[ 
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

Reply via email to