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

ZooKeeper client may write operation packets before receiving successful response to connection request, can cause TCP RST

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.4.2
    • Fix Version/s: 3.4.6, 3.5.0
    • Component/s: java client
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      The problem occurs when a connection attempt is pending and there are multiple outbound packets in the queue for other operations. In ClientCnxnSocketNIO#doIO, it is possible to receive notification that the socket is writable for the next operation packet before receiving notification that the socket is readable for the connection response from the server. If the server decides that the session is expired, then it responds by immediately closing the socket on its side. If the client has written packets after the server has closed its end of the socket, then the TCP stack may choose to abort the connection with an RST. When this happens, the client doesn't receive an orderly shutdown, and ultimately it fails to deliver a session expired event to the application.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                cnauroth Chris Nauroth
                Reporter:
                cnauroth Chris Nauroth
              • Votes:
                0 Vote for this issue
                Watchers:
                10 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: