hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a..@apache.org
Subject hadoop git commit: HADOOP-12656. MiniKdc throws "address in use" BindException. (Contributed by Wei-Chiu Chuang)
Date Sat, 19 Dec 2015 00:07:27 GMT
Repository: hadoop
Updated Branches:
  refs/heads/branch-2 223b47b39 -> e0a40b2dc


HADOOP-12656. MiniKdc throws "address in use" BindException. (Contributed by Wei-Chiu Chuang)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e0a40b2d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e0a40b2d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e0a40b2d

Branch: refs/heads/branch-2
Commit: e0a40b2dc21c29145ae54cc9224ce2f9ebf240d5
Parents: 223b47b
Author: Arpit Agarwal <arp@apache.org>
Authored: Fri Dec 18 16:06:03 2015 -0800
Committer: Arpit Agarwal <arp@apache.org>
Committed: Fri Dec 18 16:06:12 2015 -0800

----------------------------------------------------------------------
 hadoop-common-project/hadoop-common/CHANGES.txt |  3 +++
 .../java/org/apache/hadoop/minikdc/MiniKdc.java | 22 +++++++++++---------
 2 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/e0a40b2d/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index a245286..9e98357 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -776,6 +776,9 @@ Release 2.8.0 - UNRELEASED
     HADOOP-12468. Partial group resolution failure should not result in user
     lockout. (Wei-Chiu Chuang via Yongjun Zhang)
 
+    HADOOP-12656. MiniKdc throws "address in use" BindException.
+    (Wei-Chiu Chuang via Arpit Agarwal)
+
   OPTIMIZATIONS
 
     HADOOP-12051. ProtobufRpcEngine.invoke() should use Exception.toString()

http://git-wip-us.apache.org/repos/asf/hadoop/blob/e0a40b2d/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
b/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
index 9388360..228595d 100644
--- a/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
+++ b/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java
@@ -41,6 +41,7 @@ import org.apache.directory.server.kerberos.kdc.KdcServer;
 import org.apache.directory.server.kerberos.shared.crypto.encryption.KerberosKeyFactory;
 import org.apache.directory.server.kerberos.shared.keytab.Keytab;
 import org.apache.directory.server.kerberos.shared.keytab.KeytabEntry;
+import org.apache.directory.server.protocol.shared.transport.AbstractTransport;
 import org.apache.directory.server.protocol.shared.transport.TcpTransport;
 import org.apache.directory.server.protocol.shared.transport.UdpTransport;
 import org.apache.directory.server.xdbm.Index;
@@ -63,8 +64,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.StringReader;
 import java.lang.reflect.Method;
-import java.net.InetAddress;
-import java.net.ServerSocket;
+import java.net.InetSocketAddress;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -264,12 +264,6 @@ public class MiniKdc {
     LOG.info("---------------------------------------------------------------");
     this.conf = conf;
     port = Integer.parseInt(conf.getProperty(KDC_PORT));
-    if (port == 0) {
-      ServerSocket ss = new ServerSocket(0, 1, InetAddress.getByName
-              (conf.getProperty(KDC_BIND_ADDRESS)));
-      port = ss.getLocalPort();
-      ss.close();
-    }
     String orgName= conf.getProperty(ORG_NAME);
     String orgDomain = conf.getProperty(ORG_DOMAIN);
     realm = orgName.toUpperCase(Locale.ENGLISH) + "."
@@ -432,15 +426,23 @@ public class MiniKdc {
 
     // transport
     String transport = conf.getProperty(TRANSPORT);
+    AbstractTransport absTransport;
     if (transport.trim().equals("TCP")) {
-      kdc.addTransports(new TcpTransport(bindAddress, port, 3, 50));
+      absTransport = new TcpTransport(bindAddress, port, 3, 50);
     } else if (transport.trim().equals("UDP")) {
-      kdc.addTransports(new UdpTransport(port));
+      absTransport = new UdpTransport(port);
     } else {
       throw new IllegalArgumentException("Invalid transport: " + transport);
     }
+    kdc.addTransports(absTransport);
     kdc.setServiceName(conf.getProperty(INSTANCE));
     kdc.start();
+    // if using ephemeral port, update port number for binding
+    if (port == 0) {
+      InetSocketAddress addr =
+          (InetSocketAddress)absTransport.getAcceptor().getLocalAddress();
+      port = addr.getPort();
+    }
 
     StringBuilder sb = new StringBuilder();
     InputStream is2 = cl.getResourceAsStream("minikdc-krb5.conf");


Mime
View raw message