[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Dunning updated ZOOKEEPER-1174:
-----------------------------------

    Attachment: ZOOKEEPER-1174.patch

Here is a proposed patch.  There are a few considerations here that merit 
review.  

First, is it safe to register sockets with a selector after the connect call?  
I assert yes because select is level based rather than transition based.

Secondly, is it safe to not register sockets that connect immediately?  I 
think, but am not sure, that the answer is yes because we have clearly already 
called primeConnection().

Thirdly, is it OK to not rethrow the io exception from the connect call?  I am 
not sure here.  The immediate effect is that connection is only attempted at 
the timeout rate rather than the faster rate specified by some of the delays in 
the code.  This seems OK at first glance, but other opinions would be nice to 
have.

> FD leak when network unreachable
> --------------------------------
>
>                 Key: ZOOKEEPER-1174
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: java client
>    Affects Versions: 3.3.3
>            Reporter: Ted Dunning
>            Assignee: Ted Dunning
>            Priority: Critical
>             Fix For: 3.3.4
>
>         Attachments: ZOOKEEPER-1174.patch, zk-fd-leak.tgz
>
>
> In the socket connection logic there are several errors that result in bad 
> behavior.  The basic problem is that a socket is registered with a selector 
> unconditionally when there are nuances that should be dealt with.  First, the 
> socket may connect immediately.  Secondly, the connect may throw an 
> exception.  In either of these two cases, I don't think that the socket 
> should be registered.
> I will attach a test case that demonstrates the problem.  I have been unable 
> to create a unit test that exhibits the problem because I would have to mock 
> the low level socket libraries to do so.  It would still be good to do so if 
> somebody can figure out a good way.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to