[
https://issues.apache.org/jira/browse/ZOOKEEPER-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ted Yu updated ZOOKEEPER-1560:
------------------------------
Attachment: zookeeper-1560-v5.txt
>From
>https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/1215//testReport/org.apache.zookeeper.test/ClientTest/testLargeNodeData/
> :
{code}
2012-10-12 14:10:50,042 [myid:] - WARN
[main-SendThread(localhost:11221):ClientCnxn$SendThread@1089] - Session
0x13a555031cf0000 for server localhost/127.0.0.1:11221, unexpected error,
closing socket connection and attempting reconnect
java.io.IOException: Couldn't write 2000 bytes, 1152 bytes written
at
org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:142)
at
org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:370)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
2012-10-12 14:10:50,044 [myid:] - WARN
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@349] - caught end of
stream exception
EndOfStreamException: Unable to read additional data from client sessionid
0x13a555031cf0000, likely client has closed socket
at
org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:220)
at
org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
at java.lang.Thread.run(Thread.java:662)
{code}
Patch v5 adds more information to exception message.
> 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.4, 3.5.0
> Reporter: Igor Motov
> Assignee: Ted Yu
> Fix For: 3.5.0, 3.4.5
>
> Attachments: ZOOKEEPER-1560.patch, zookeeper-1560-v1.txt,
> zookeeper-1560-v2.txt, zookeeper-1560-v3.txt, zookeeper-1560-v4.txt,
> zookeeper-1560-v5.txt
>
>
> 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