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