Patrick Hunt updated ZOOKEEPER-562:

    Release Note: Basically the problem here is that the client gets confused, 
it tries to send a ping to the server but since the tcp queue is full it's 
unable to do so. The logic responsible for sending occasional pings based on 
the timeout gets confused by this, and ends up flooding the server with pings. 
Eventually this clears up, however it can result in increased load on the 
server and instability for the effected client.

> c client can flood server with pings if tcp send queue filled
> -------------------------------------------------------------
>                 Key: ZOOKEEPER-562
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-562
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: c client
>    Affects Versions: 3.2.1
>            Reporter: Patrick Hunt
>            Assignee: Benjamin Reed
>            Priority: Blocker
>             Fix For: 3.2.2, 3.3.0
>         Attachments: ZOOKEEPER-562.patch
> The c client can flood the server with pings if the tcp queue is filled.
> Say the cluster is overloaded and shuts down the recv processing
> a c client can send a ping, but since last_send is only updated on successful 
> pushing of data into the 
> socket, if flush_send_queue fails to send any data (send_buffer returns 0) 
> then last_send is not updated
> and zookeeper_interest will again send a ping the next time it is woken - 
> which could be 0 if recv_to is close
> to 0, easily could happen if server is not sending data to the client.

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