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

Camille Fournier commented on ZOOKEEPER-1197:
---------------------------------------------

I'm not entirely sure why closing the connection from the client isn't 
feasible. Right now, if we were to leave the client connection as it is, it 
would still close itself in nc non-interactive (and possibly truncate the 
data), and for other clients it would close when the client closed, or we could 
put a timeout around connections created with a 4lw since we can identify them. 
I think the trickier thing is that anything else that comes in off a 4lw 
connection causes an IO length exception which is nasty. 

I'll play with SO_LINGER again. It doesn't fix this problem in my testing, but 
my testing was under windows. If it makes it better in linux, it's still worth 
doing for that bit.
                
> Incorrect socket handling of 4 letter words for NIO
> ---------------------------------------------------
>
>                 Key: ZOOKEEPER-1197
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1197
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.3.3, 3.4.0
>            Reporter: Camille Fournier
>            Assignee: Camille Fournier
>            Priority: Blocker
>             Fix For: 3.3.4, 3.4.0, 3.5.0
>
>         Attachments: ZOOKEEPER-1197.patch
>
>
> When transferring a large amount of information from a 4 letter word, 
> especially in interactive mode (telnet or nc) over a slower network link, the 
> connection can be closed before all of the data has reached the client. This 
> is due to the way we handle nc non-interactive mode, by cancelling the 
> selector key. 
> Instead of cancelling the selector key for 4-letter-words, we should instead 
> flag the NIOServerCnxn to ignore detection of a close condition on that 
> socket (CancelledKeyException, EndOfStreamException). Since the 4lw will 
> close the connection immediately upon completion, this should be safe to do. 
> See ZOOKEEPER-737 for more details

--
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