[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13115464#comment-13115464
 ] 

Ted Dunning commented on ZOOKEEPER-1174:
----------------------------------------

The old patch fails to apply because of a change introduced in the fix for 
ZOOKEEPER-786.  The chance is this:

@@ -185,9 +190,7 @@ public class ClientCnxnSocketNIO extends ClientCnxnSocket {
         sock.socket().setSoLinger(false, -1);
         sock.socket().setTcpNoDelay(true);
         sockKey = sock.register(selector, SelectionKey.OP_CONNECT);
-        if (sock.connect(addr)) {
-            sendThread.primeConnection();
-        }
+        sock.connect(addr);
         initialized = false;
 

Why was the primeConnection call deleted?  I can update the patch to account 
for this but that seems a bit dangerous since the commit comment on this patch 
doesn't refer to this change at all.

                
> 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, 3.4.0, 3.5.0
>
>         Attachments: ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, 
> ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, 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.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to