Igor Motov created ZOOKEEPER-1560:
-------------------------------------

             Summary: Zookeeper client hangs on creation of large nodes
                 Key: ZOOKEEPER-1560
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1560
             Project: ZooKeeper
          Issue Type: Bug
          Components: java client
    Affects Versions: 3.4.3, 3.5.0
            Reporter: Igor Motov


To reproduce, try creating a node with 0.5M of data using java client. The test 
will hang waiting for a response from the server. See the attached patch for 
the test that reproduces the issue.

It seems that ZOOKEEPER-1437 introduced a few issues to 
{{ClientCnxnSocketNIO.doIO}} that prevent {{ClientCnxnSocketNIO}} from sending 
large packets that require several invocations of {{SocketChannel.write}} to 
complete. The first issue is that the call to 
{{outgoingQueue.removeFirstOccurrence(p);}} removes the packet from the queue 
even if the packet wasn't completely sent yet.  It looks to me that this call 
should be moved under {{if (!pbb.hasRemaining())}} The second issue is that 
{{p.createBB()}} is reinitializing {{ByteBuffer}} on every iteration, which 
confuses {{SocketChannel.write}}. And the third issue is caused by extra calls 
to {{cnxn.getXid()}} that increment xid on every iteration and confuse the 
server.


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