From fe90916e8127afb2662f1b8be99006b800c0dcef Mon Sep 17 00:00:00 2001 From: Dhiraj Hegde Date: Wed, 27 May 2020 16:33:56 -0700 Subject: [PATCH 1/2] HADOOP-17052: Throw UnknownHostException in NetUtils.connect --- .../java/org/apache/hadoop/net/NetUtils.java | 3 +++ .../org/apache/hadoop/net/TestNetUtils.java | 20 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java index 478bd4133cb66..84efb69325e82 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java @@ -37,6 +37,7 @@ import java.net.UnknownHostException; import java.net.ConnectException; import java.nio.channels.SocketChannel; +import java.nio.channels.UnresolvedAddressException; import java.util.Map.Entry; import java.util.regex.Pattern; import java.util.*; @@ -534,6 +535,8 @@ public static void connect(Socket socket, } } catch (SocketTimeoutException ste) { throw new ConnectTimeoutException(ste.getMessage()); + } catch (UnresolvedAddressException ue) { + throw new UnknownHostException(ue.getMessage()); } // There is a very rare case allowed by the TCP specification, such that diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java index b11b1e96ded59..7edc6f8eee587 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java @@ -95,7 +95,25 @@ public void testAvoidLoopbackTcpSockets() throws Throwable { assertInException(se, "Invalid argument"); } } - + + @Test + public void testInvalidAddress() throws Throwable { + Configuration conf = new Configuration(); + + Socket socket = NetUtils.getDefaultSocketFactory(conf) + .createSocket(); + socket.bind(new InetSocketAddress("127.0.0.1", 0)); + try { + NetUtils.connect(socket, + new InetSocketAddress("invalid-test-host", + 0), 20000); + socket.close(); + fail("Should not have connected"); + } catch (UnknownHostException ce) { + System.err.println("Got exception: " + ce); + } + } + @Test public void testSocketReadTimeoutWithChannel() throws Exception { doSocketReadTimeoutTest(true); From 8bc3e656db272d08379fd4b8517842b7f76c8945 Mon Sep 17 00:00:00 2001 From: Dhiraj Hegde Date: Sat, 30 May 2020 14:30:40 -0700 Subject: [PATCH 2/2] Address code review comments --- .../src/main/java/org/apache/hadoop/net/NetUtils.java | 4 ++-- .../src/test/java/org/apache/hadoop/net/TestNetUtils.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java index 84efb69325e82..c5a5b111b2b3d 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java @@ -535,8 +535,8 @@ public static void connect(Socket socket, } } catch (SocketTimeoutException ste) { throw new ConnectTimeoutException(ste.getMessage()); - } catch (UnresolvedAddressException ue) { - throw new UnknownHostException(ue.getMessage()); + } catch (UnresolvedAddressException uae) { + throw new UnknownHostException(uae.getMessage()); } // There is a very rare case allowed by the TCP specification, such that diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java index 7edc6f8eee587..76284932c43de 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestNetUtils.java @@ -109,8 +109,8 @@ public void testInvalidAddress() throws Throwable { 0), 20000); socket.close(); fail("Should not have connected"); - } catch (UnknownHostException ce) { - System.err.println("Got exception: " + ce); + } catch (UnknownHostException uhe) { + LOG.info("Got exception: ", uhe); } }