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

Jeffrey Zhong updated ZOOKEEPER-1751:
-------------------------------------

    Description: 
We could throw SessionTimeoutException exception even when timeToNextPing may 
also be negative depending on the time when the following line is executed by 
the thread because we check time out before sending a ping.
{code}
  to = readTimeout - clientCnxnSocket.getIdleRecv();
{code}

In addition, we only ping twice no matter how long the session time out value 
is. For example, we set session time out = 60mins then we only try ping twice 
in 40mins window. Therefore, the connection could be dropped by OS after idle 
time out.

The issue is causing randomly "connection loss" or "session expired" issues in 
client side which is bad for applications like HBase.

  was:
We could throw SessionTimeoutException exception even when timeToNextPing may 
also be negative depending on the time when the following line is executed by 
the thread because we check time out before sending a ping.
{code}
  to = readTimeout - clientCnxnSocket.getIdleRecv();
{code}

In addition, we only ping twice no matter how long the session time out value 
is. For example, we set session time out = 60mins then we only try ping twice 
in 40mins window. Therefore, the connection could be dropped by OS after idle 
time out.

    
> ClientCnxn#run could miss the second ping or connection get dropped before a 
> ping
> ---------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1751
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1751
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.4.5
>            Reporter: Jeffrey Zhong
>            Assignee: Jeffrey Zhong
>         Attachments: zookeeper-1751.patch
>
>
> We could throw SessionTimeoutException exception even when timeToNextPing may 
> also be negative depending on the time when the following line is executed by 
> the thread because we check time out before sending a ping.
> {code}
>   to = readTimeout - clientCnxnSocket.getIdleRecv();
> {code}
> In addition, we only ping twice no matter how long the session time out value 
> is. For example, we set session time out = 60mins then we only try ping twice 
> in 40mins window. Therefore, the connection could be dropped by OS after idle 
> time out.
> The issue is causing randomly "connection loss" or "session expired" issues 
> in client side which is bad for applications like HBase.

--
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

Reply via email to