Uploaded image for project: 'ZooKeeper'
  1. ZooKeeper
  2. ZOOKEEPER-1751

ClientCnxn#run could miss the second ping or connection get dropped before a ping

VotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.3.5, 3.4.5
    • 3.4.6, 3.5.0
    • None
    • None

    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.

        to = readTimeout - clientCnxnSocket.getIdleRecv();
      

      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.

      Attachments

        1. zookeeper-1751.patch
          2 kB
          Jeffrey Zhong

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            jeffreyz Jeffrey Zhong
            jeffreyz Jeffrey Zhong
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment