You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by bo...@apache.org on 2012/04/12 22:45:52 UTC
svn commit: r1325503 - in
/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common:
CHANGES.txt src/main/java/org/apache/hadoop/ipc/Client.java
src/main/java/org/apache/hadoop/net/NetUtils.java
src/test/java/org/apache/hadoop/ipc/TestRPC.java
Author: bobby
Date: Thu Apr 12 20:45:51 2012
New Revision: 1325503
URL: http://svn.apache.org/viewvc?rev=1325503&view=rev
Log:
svn merge -c 1325500 from trunk. FIXES: HADOOP-7510. Tokens should use original hostname provided instead of ip (Daryn Sharp via bobby)
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1325503&r1=1325502&r2=1325503&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt Thu Apr 12 20:45:51 2012
@@ -316,6 +316,9 @@ Release 0.23.3 - UNRELEASED
HADOOP-8014. ViewFileSystem does not correctly implement getDefaultBlockSize,
getDefaultReplication, getContentSummary (John George via bobby)
+ HADOOP-7510. Tokens should use original hostname provided instead of ip
+ (Daryn Sharp via bobby)
+
Release 0.23.2 - UNRELEASED
NEW FEATURES
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java?rev=1325503&r1=1325502&r2=1325503&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java Thu Apr 12 20:45:51 2012
@@ -53,7 +53,6 @@ import org.apache.hadoop.fs.CommonConfig
import org.apache.hadoop.ipc.RpcPayloadHeader.*;
import org.apache.hadoop.ipc.protobuf.IpcConnectionContextProtos.IpcConnectionContextProto;
import org.apache.hadoop.io.IOUtils;
-import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableUtils;
import org.apache.hadoop.io.DataOutputBuffer;
@@ -243,8 +242,8 @@ public class Client {
this.remoteId = remoteId;
this.server = remoteId.getAddress();
if (server.isUnresolved()) {
- throw NetUtils.wrapException(remoteId.getAddress().getHostName(),
- remoteId.getAddress().getPort(),
+ throw NetUtils.wrapException(server.getHostName(),
+ server.getPort(),
null,
0,
new UnknownHostException());
@@ -274,9 +273,8 @@ public class Client {
} catch (IllegalAccessException e) {
throw new IOException(e.toString());
}
- InetSocketAddress addr = remoteId.getAddress();
- token = tokenSelector.selectToken(new Text(addr.getAddress()
- .getHostAddress() + ":" + addr.getPort()),
+ token = tokenSelector.selectToken(
+ SecurityUtil.buildTokenService(server),
ticket.getTokens());
}
KerberosInfo krbInfo = SecurityUtil.getKerberosInfo(protocol, conf);
@@ -305,7 +303,7 @@ public class Client {
+ protocol.getSimpleName());
this.setName("IPC Client (" + socketFactory.hashCode() +") connection to " +
- remoteId.getAddress().toString() +
+ server.toString() +
" from " + ((ticket==null)?"an unknown user":ticket.getUserName()));
this.setDaemon(true);
}
@@ -751,7 +749,6 @@ public class Client {
}
}
- @SuppressWarnings("unused")
public InetSocketAddress getRemoteAddress() {
return server;
}
@@ -1159,7 +1156,7 @@ public class Client {
call.error.fillInStackTrace();
throw call.error;
} else { // local exception
- InetSocketAddress address = remoteId.getAddress();
+ InetSocketAddress address = connection.getRemoteAddress();
throw NetUtils.wrapException(address.getHostName(),
address.getPort(),
NetUtils.getHostname(),
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java?rev=1325503&r1=1325502&r2=1325503&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java Thu Apr 12 20:45:51 2012
@@ -344,8 +344,8 @@ public class NetUtils {
/**
* Returns InetSocketAddress that a client can use to
* connect to the server. Server.getListenerAddress() is not correct when
- * the server binds to "0.0.0.0". This returns "127.0.0.1:port" when
- * the getListenerAddress() returns "0.0.0.0:port".
+ * the server binds to "0.0.0.0". This returns "hostname:port" of the server,
+ * or "127.0.0.1:port" when the getListenerAddress() returns "0.0.0.0:port".
*
* @param server
* @return socket address that a client can use to connect to the server.
@@ -353,7 +353,12 @@ public class NetUtils {
public static InetSocketAddress getConnectAddress(Server server) {
InetSocketAddress addr = server.getListenerAddress();
if (addr.getAddress().isAnyLocalAddress()) {
- addr = createSocketAddrForHost("127.0.0.1", addr.getPort());
+ try {
+ addr = new InetSocketAddress(InetAddress.getLocalHost(), addr.getPort());
+ } catch (UnknownHostException uhe) {
+ // shouldn't get here unless the host doesn't have a loopback iface
+ addr = createSocketAddrForHost("127.0.0.1", addr.getPort());
+ }
}
return addr;
}
@@ -655,7 +660,7 @@ public class NetUtils {
}
InetAddress addr = null;
try {
- addr = InetAddress.getByName(host);
+ addr = SecurityUtil.getByName(host);
if (NetworkInterface.getByInetAddress(addr) == null) {
addr = null; // Not a local address
}
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java?rev=1325503&r1=1325502&r2=1325503&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java Thu Apr 12 20:45:51 2012
@@ -21,6 +21,7 @@ package org.apache.hadoop.ipc;
import java.io.Closeable;
import java.io.IOException;
import java.net.ConnectException;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
@@ -41,6 +42,8 @@ import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.retry.RetryPolicies;
import org.apache.hadoop.io.retry.RetryProxy;
import org.apache.hadoop.ipc.Client.ConnectionId;
+import org.apache.hadoop.ipc.TestSaslRPC.TestSaslImpl;
+import org.apache.hadoop.ipc.TestSaslRPC.TestSaslProtocol;
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.authorize.AuthorizationException;
@@ -543,6 +546,19 @@ public class TestRPC {
}
@Test
+ public void testServerAddress() throws IOException {
+ Server server = RPC.getServer(TestProtocol.class,
+ new TestImpl(), ADDRESS, 0, 5, true, conf, null);
+ InetSocketAddress bindAddr = null;
+ try {
+ bindAddr = NetUtils.getConnectAddress(server);
+ } finally {
+ server.stop();
+ }
+ assertEquals(bindAddr.getAddress(), InetAddress.getLocalHost());
+ }
+
+ @Test
public void testAuthorization() throws Exception {
Configuration conf = new Configuration();
conf.setBoolean(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION,