Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Duplicate
-
3.5.0
-
None
-
It is fixed in
ZOOKEEPER-1560.
Description
In the doIO method of ClientCnxnSocketNIO
if (p != null) { outgoingQueue.removeFirstOccurrence(p); updateLastSend(); if ((p.requestHeader != null) && (p.requestHeader.getType() != OpCode.ping) && (p.requestHeader.getType() != OpCode.auth)) { p.requestHeader.setXid(cnxn.getXid()); } p.createBB(); ByteBuffer pbb = p.bb; sock.write(pbb); if (!pbb.hasRemaining()) { sentCount++; if (p.requestHeader != null && p.requestHeader.getType() != OpCode.ping && p.requestHeader.getType() != OpCode.auth) { pending.add(p); } }
When the sock.write(pbb) method throws an exception, the packet will not be cleanup(not in outgoingQueue nor in pendingQueue). If the client wait for it, it will wait forever...
Attachments
Issue Links
- is related to
-
ZOOKEEPER-1560 Zookeeper client hangs on creation of large nodes
- Resolved
- relates to
-
ZOOKEEPER-1437 Client uses session before SASL authentication complete
- Resolved
-
ZOOKEEPER-107 Allow dynamic changes to server cluster membership
- Resolved