You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Michael Han (JIRA)" <ji...@apache.org> on 2017/05/18 21:16:04 UTC

[jira] [Resolved] (ZOOKEEPER-2785) Server inappropriately throttles connections under load before SASL completes

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

Michael Han resolved ZOOKEEPER-2785.
------------------------------------
       Resolution: Fixed
    Fix Version/s: 3.5.4
                   3.6.0

Issue resolved by pull request 256
[https://github.com/apache/zookeeper/pull/256]

> Server inappropriately throttles connections under load before SASL completes
> -----------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2785
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2785
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.10
>            Reporter: Abhishek Singh Chouhan
>            Priority: Critical
>              Labels: sasl
>             Fix For: 3.4.11, 3.6.0, 3.5.4
>
>
> When a zk server is running close to its outstanding requests limit, the server incorrectly throttles the sasl request. This leads to the client waiting for the final sasl packet (session is already established) and deferring all non priming packets till then which also includes the ping packets. The client then waits for the final packet but never gets it and times out saying haven't heard from server. This is fatal for services such as HBase which retry for finite attempts and exit post these attempts.
> Issue being that in ZooKeeperServer.processPacket(..) incase of sasl we send the response and incorrectly also call cnxn.incrOutstandingRequests(h), which throttles the connection if we're running over outstandingrequests limit, which results in the server not processing the subsequent packet from the client. Also we donot have any pending request to send for the connection and hence never call enableRecv(). We should return after sending response to the sasl request.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)