Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-6722

NetUtils.connect should check that it hasn't connected a socket to itself

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

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.20.205.0, 0.21.0
    • util
    • None
    • Reviewed

    Description

      I had no idea this was possible, but it turns out that a TCP connection will be established in the rare case that the local side of the socket binds to the ephemeral port that you later try to connect to. This can present itself in very very rare occasion when an RPC client is trying to connect to a daemon running on the same node, but that daemon is down. To see what I'm talking about, run "while true ; do telnet localhost 60020 ; done" on a multicore box and wait several minutes.

      This can be easily detected in NetUtils.connect by making sure the local address/port is not equal to the remote address/port.

      Attachments

        1. hadoop-6722.txt
          4 kB
          Todd Lipcon
        2. HADOOP-6722.20s.patch
          4 kB
          Suresh Srinivas

        Activity

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

          People

            tlipcon Todd Lipcon
            tlipcon Todd Lipcon
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment