[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-970?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Koch updated ZOOKEEPER-970:
----------------------------------

    Description: 
There have been several jira tickets to fix the close logic but there are still 
possibilities for blocks as discovered in ZOOKEEPER-911.

For example the failing server.InvalidSnapshotTest times out because the 
ClientCnxn.close() call blocks in Packet.waitForFinish().

However the only change introduced is that instead of

synchronize(packet) while(!packet.finished) packet.wait()

I call packet.waitForFinish() which is a synchronized method.

The bug is in ClientCnxn.queuePacket:
ClientCnxn.closing is set to true before the closeSession Packet is added to 
outgoingQueue. Between these two steps, the SendThread already terminate so 
that there's nobody left to call packet.notifyAll().

> Review and refactor Java client close logic
> -------------------------------------------
>
>                 Key: ZOOKEEPER-970
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-970
>             Project: ZooKeeper
>          Issue Type: Sub-task
>            Reporter: Thomas Koch
>            Assignee: Thomas Koch
>
> There have been several jira tickets to fix the close logic but there are 
> still possibilities for blocks as discovered in ZOOKEEPER-911.
> For example the failing server.InvalidSnapshotTest times out because the 
> ClientCnxn.close() call blocks in Packet.waitForFinish().
> However the only change introduced is that instead of
> synchronize(packet) while(!packet.finished) packet.wait()
> I call packet.waitForFinish() which is a synchronized method.
> The bug is in ClientCnxn.queuePacket:
> ClientCnxn.closing is set to true before the closeSession Packet is added to 
> outgoingQueue. Between these two steps, the SendThread already terminate so 
> that there's nobody left to call packet.notifyAll().

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to