From 2b125b3a392c654e2c0179581386b892533d821a Mon Sep 17 00:00:00 2001 From: Jian He Date: Mon, 10 Nov 2014 17:17:01 -0800 Subject: [PATCH] HADOOP-9576. Changed NetUtils#wrapException to throw EOFException instead of wrapping it as IOException. Contributed by Steve Loughran (cherry picked from commit 86bf8c7193013834f67e03bd67a320cc080ef32c) --- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../main/java/org/apache/hadoop/net/NetUtils.java | 8 ++++++++ .../java/org/apache/hadoop/net/TestNetUtils.java | 12 ++++++++++++ 3 files changed, 23 insertions(+) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 31f7f347e5b..db70f246318 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -79,6 +79,9 @@ Release 2.7.0 - UNRELEASED HADOOP-11294. Nfs3FileAttributes should not change the values of rdev, nlink and size in the constructor. (Brandon Li via wheat9) + HADOOP-9576. Changed NetUtils#wrapException to throw EOFException instead + of wrapping it as IOException. (Steve Loughran via jianhe) + Release 2.6.0 - 2014-11-15 INCOMPATIBLE CHANGES 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 9ee0f3e3b96..b535ddaee2f 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 @@ -17,6 +17,7 @@ */ package org.apache.hadoop.net; +import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -759,6 +760,13 @@ public class NetUtils { + " failed on socket timeout exception: " + exception + ";" + see("NoRouteToHost")); + } else if (exception instanceof EOFException) { + return wrapWithMessage(exception, + "End of File Exception between " + + getHostDetailsAsString(destHost, destPort, localHost) + + ": " + exception + + ";" + + see("EOFException")); } else { return (IOException) new IOException("Failed on local exception: " 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 b03afca0911..319e8a9f2a4 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 @@ -19,6 +19,7 @@ package org.apache.hadoop.net; import static org.junit.Assert.*; +import java.io.EOFException; import java.io.IOException; import java.net.BindException; import java.net.ConnectException; @@ -256,6 +257,17 @@ public class TestNetUtils { assertInException(wrapped, "/UnknownHost"); } + @Test + public void testWrapEOFException() throws Throwable { + IOException e = new EOFException("eof"); + IOException wrapped = verifyExceptionClass(e, EOFException.class); + assertInException(wrapped, "eof"); + assertWikified(wrapped); + assertInException(wrapped, "localhost"); + assertRemoteDetailsIncluded(wrapped); + assertInException(wrapped, "/EOFException"); + } + @Test public void testGetConnectAddress() throws IOException { NetUtils.addStaticResolution("host", "127.0.0.1");