Browse Source

HADOOP-12653. Use SO_REUSEADDR to avoid getting "Address already in use" when using kerberos and attempting to bind to any port on the local IP address (cmccabe)

Colin Patrick Mccabe 9 years ago
parent
commit
30c7dfd8ba

+ 4 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -659,6 +659,10 @@ Release 2.9.0 - UNRELEASED
     HADOOP-12663. Remove Hard-Coded Values From FileSystem.java.
     (BELUGA BEHR via stevel)
 
+    HADOOP-12653. Use SO_REUSEADDR to avoid getting "Address already in use"
+    when using kerberos and attempting to bind to any port on the local IP
+    address (cmccabe)
+
   BUG FIXES
 
     HADOOP-12655. TestHttpServer.testBindAddress bind port range is wider

+ 1 - 0
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java

@@ -625,6 +625,7 @@ public class Client {
               // If host name is a valid local address then bind socket to it
               InetAddress localAddr = NetUtils.getLocalInetAddress(host);
               if (localAddr != null) {
+                this.socket.setReuseAddress(true);
                 this.socket.bind(new InetSocketAddress(localAddr, 0));
               }
             }