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

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.20.205.0, 0.21.0
    • Component/s: util
    • Labels:
      None
    • Hadoop Flags:
      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

            People

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

              Dates

              • Created:
                Updated:
                Resolved: