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 li...@apache.org on 2016/12/02 21:45:54 UTC
[1/3] hadoop git commit: HADOOP-13857. S3AUtils.translateException to
map (wrapped) InterruptedExceptions to InterruptedIOEs. Contributed by Steve
Loughran
Repository: hadoop
Updated Branches:
refs/heads/branch-2 eb301bb3e -> a4e053963
refs/heads/branch-2.8 f9ef3e371 -> 4a1b7d6de
refs/heads/trunk c7ff34f8d -> 2ff84a004
HADOOP-13857. S3AUtils.translateException to map (wrapped) InterruptedExceptions to InterruptedIOEs. Contributed by Steve Loughran
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2ff84a00
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2ff84a00
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2ff84a00
Branch: refs/heads/trunk
Commit: 2ff84a00405e977b1fd791cfb974244580dd5ae8
Parents: c7ff34f
Author: Mingliang Liu <li...@apache.org>
Authored: Fri Dec 2 13:36:04 2016 -0800
Committer: Mingliang Liu <li...@apache.org>
Committed: Fri Dec 2 13:36:04 2016 -0800
----------------------------------------------------------------------
.../java/org/apache/hadoop/fs/s3a/S3AUtils.java | 23 ++++++++++++
.../fs/s3a/TestS3AExceptionTranslation.java | 38 ++++++++++++++++++++
2 files changed, 61 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2ff84a00/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
index 49f8862..dedbfd4 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InterruptedIOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -113,6 +114,10 @@ public final class S3AUtils {
path != null ? (" on " + path) : "",
exception);
if (!(exception instanceof AmazonServiceException)) {
+ if (containsInterruptedException(exception)) {
+ return (IOException)new InterruptedIOException(message)
+ .initCause(exception);
+ }
return new AWSClientIOException(message, exception);
} else {
@@ -195,6 +200,24 @@ public final class S3AUtils {
}
/**
+ * Recurse down the exception loop looking for any inner details about
+ * an interrupted exception.
+ * @param thrown exception thrown
+ * @return true if down the execution chain the operation was an interrupt
+ */
+ static boolean containsInterruptedException(Throwable thrown) {
+ if (thrown == null) {
+ return false;
+ }
+ if (thrown instanceof InterruptedException ||
+ thrown instanceof InterruptedIOException) {
+ return true;
+ }
+ // tail recurse
+ return containsInterruptedException(thrown.getCause());
+ }
+
+ /**
* Get low level details of an amazon exception for logging; multi-line.
* @param e exception
* @return string details
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2ff84a00/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
index a7dafa0..e548ac2 100644
--- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
+++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
@@ -25,9 +25,12 @@ import static org.junit.Assert.*;
import java.io.EOFException;
import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InterruptedIOException;
import java.nio.file.AccessDeniedException;
import java.util.Collections;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
@@ -124,4 +127,39 @@ public class TestS3AExceptionTranslation {
return verifyExceptionClass(clazz,
translateException("test", "/", exception));
}
+
+ private void assertContainsInterrupted(boolean expected, Throwable thrown)
+ throws Throwable {
+ if (containsInterruptedException(thrown) != expected) {
+ throw thrown;
+ }
+ }
+
+ @Test
+ public void testInterruptExceptionDetecting() throws Throwable {
+ InterruptedException interrupted = new InterruptedException("irq");
+ assertContainsInterrupted(true, interrupted);
+ IOException ioe = new IOException("ioe");
+ assertContainsInterrupted(false, ioe);
+ assertContainsInterrupted(true, ioe.initCause(interrupted));
+ assertContainsInterrupted(true,
+ new InterruptedIOException("ioirq"));
+ }
+
+ @Test(expected = InterruptedIOException.class)
+ public void testExtractInterrupted() throws Throwable {
+ throw extractException("", "",
+ new ExecutionException(
+ new AmazonClientException(
+ new InterruptedException(""))));
+ }
+
+ @Test(expected = InterruptedIOException.class)
+ public void testExtractInterruptedIO() throws Throwable {
+ throw extractException("", "",
+ new ExecutionException(
+ new AmazonClientException(
+ new InterruptedIOException(""))));
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[2/3] hadoop git commit: HADOOP-13857. S3AUtils.translateException to
map (wrapped) InterruptedExceptions to InterruptedIOEs. Contributed by Steve
Loughran
Posted by li...@apache.org.
HADOOP-13857. S3AUtils.translateException to map (wrapped) InterruptedExceptions to InterruptedIOEs. Contributed by Steve Loughran
(cherry picked from commit 2ff84a00405e977b1fd791cfb974244580dd5ae8)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a4e05396
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a4e05396
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a4e05396
Branch: refs/heads/branch-2
Commit: a4e053963634e34885165d1a76c25be76ac7a336
Parents: eb301bb
Author: Mingliang Liu <li...@apache.org>
Authored: Fri Dec 2 13:36:04 2016 -0800
Committer: Mingliang Liu <li...@apache.org>
Committed: Fri Dec 2 13:39:23 2016 -0800
----------------------------------------------------------------------
.../java/org/apache/hadoop/fs/s3a/S3AUtils.java | 23 ++++++++++++
.../fs/s3a/TestS3AExceptionTranslation.java | 38 ++++++++++++++++++++
2 files changed, 61 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4e05396/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
index 49f8862..dedbfd4 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InterruptedIOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -113,6 +114,10 @@ public final class S3AUtils {
path != null ? (" on " + path) : "",
exception);
if (!(exception instanceof AmazonServiceException)) {
+ if (containsInterruptedException(exception)) {
+ return (IOException)new InterruptedIOException(message)
+ .initCause(exception);
+ }
return new AWSClientIOException(message, exception);
} else {
@@ -195,6 +200,24 @@ public final class S3AUtils {
}
/**
+ * Recurse down the exception loop looking for any inner details about
+ * an interrupted exception.
+ * @param thrown exception thrown
+ * @return true if down the execution chain the operation was an interrupt
+ */
+ static boolean containsInterruptedException(Throwable thrown) {
+ if (thrown == null) {
+ return false;
+ }
+ if (thrown instanceof InterruptedException ||
+ thrown instanceof InterruptedIOException) {
+ return true;
+ }
+ // tail recurse
+ return containsInterruptedException(thrown.getCause());
+ }
+
+ /**
* Get low level details of an amazon exception for logging; multi-line.
* @param e exception
* @return string details
http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4e05396/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
index a7dafa0..e548ac2 100644
--- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
+++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
@@ -25,9 +25,12 @@ import static org.junit.Assert.*;
import java.io.EOFException;
import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InterruptedIOException;
import java.nio.file.AccessDeniedException;
import java.util.Collections;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
@@ -124,4 +127,39 @@ public class TestS3AExceptionTranslation {
return verifyExceptionClass(clazz,
translateException("test", "/", exception));
}
+
+ private void assertContainsInterrupted(boolean expected, Throwable thrown)
+ throws Throwable {
+ if (containsInterruptedException(thrown) != expected) {
+ throw thrown;
+ }
+ }
+
+ @Test
+ public void testInterruptExceptionDetecting() throws Throwable {
+ InterruptedException interrupted = new InterruptedException("irq");
+ assertContainsInterrupted(true, interrupted);
+ IOException ioe = new IOException("ioe");
+ assertContainsInterrupted(false, ioe);
+ assertContainsInterrupted(true, ioe.initCause(interrupted));
+ assertContainsInterrupted(true,
+ new InterruptedIOException("ioirq"));
+ }
+
+ @Test(expected = InterruptedIOException.class)
+ public void testExtractInterrupted() throws Throwable {
+ throw extractException("", "",
+ new ExecutionException(
+ new AmazonClientException(
+ new InterruptedException(""))));
+ }
+
+ @Test(expected = InterruptedIOException.class)
+ public void testExtractInterruptedIO() throws Throwable {
+ throw extractException("", "",
+ new ExecutionException(
+ new AmazonClientException(
+ new InterruptedIOException(""))));
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org
[3/3] hadoop git commit: HADOOP-13857. S3AUtils.translateException to
map (wrapped) InterruptedExceptions to InterruptedIOEs. Contributed by Steve
Loughran
Posted by li...@apache.org.
HADOOP-13857. S3AUtils.translateException to map (wrapped) InterruptedExceptions to InterruptedIOEs. Contributed by Steve Loughran
(cherry picked from commit 2ff84a00405e977b1fd791cfb974244580dd5ae8)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4a1b7d6d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4a1b7d6d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4a1b7d6d
Branch: refs/heads/branch-2.8
Commit: 4a1b7d6dee8bc55b9d2f6e6d28b0829775e8d67a
Parents: f9ef3e3
Author: Mingliang Liu <li...@apache.org>
Authored: Fri Dec 2 13:36:04 2016 -0800
Committer: Mingliang Liu <li...@apache.org>
Committed: Fri Dec 2 13:42:58 2016 -0800
----------------------------------------------------------------------
.../java/org/apache/hadoop/fs/s3a/S3AUtils.java | 23 ++++++++++++
.../fs/s3a/TestS3AExceptionTranslation.java | 38 ++++++++++++++++++++
2 files changed, 61 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4a1b7d6d/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
index 49f8862..dedbfd4 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InterruptedIOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -113,6 +114,10 @@ public final class S3AUtils {
path != null ? (" on " + path) : "",
exception);
if (!(exception instanceof AmazonServiceException)) {
+ if (containsInterruptedException(exception)) {
+ return (IOException)new InterruptedIOException(message)
+ .initCause(exception);
+ }
return new AWSClientIOException(message, exception);
} else {
@@ -195,6 +200,24 @@ public final class S3AUtils {
}
/**
+ * Recurse down the exception loop looking for any inner details about
+ * an interrupted exception.
+ * @param thrown exception thrown
+ * @return true if down the execution chain the operation was an interrupt
+ */
+ static boolean containsInterruptedException(Throwable thrown) {
+ if (thrown == null) {
+ return false;
+ }
+ if (thrown instanceof InterruptedException ||
+ thrown instanceof InterruptedIOException) {
+ return true;
+ }
+ // tail recurse
+ return containsInterruptedException(thrown.getCause());
+ }
+
+ /**
* Get low level details of an amazon exception for logging; multi-line.
* @param e exception
* @return string details
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4a1b7d6d/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
index a7dafa0..e548ac2 100644
--- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
+++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3AExceptionTranslation.java
@@ -25,9 +25,12 @@ import static org.junit.Assert.*;
import java.io.EOFException;
import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InterruptedIOException;
import java.nio.file.AccessDeniedException;
import java.util.Collections;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
@@ -124,4 +127,39 @@ public class TestS3AExceptionTranslation {
return verifyExceptionClass(clazz,
translateException("test", "/", exception));
}
+
+ private void assertContainsInterrupted(boolean expected, Throwable thrown)
+ throws Throwable {
+ if (containsInterruptedException(thrown) != expected) {
+ throw thrown;
+ }
+ }
+
+ @Test
+ public void testInterruptExceptionDetecting() throws Throwable {
+ InterruptedException interrupted = new InterruptedException("irq");
+ assertContainsInterrupted(true, interrupted);
+ IOException ioe = new IOException("ioe");
+ assertContainsInterrupted(false, ioe);
+ assertContainsInterrupted(true, ioe.initCause(interrupted));
+ assertContainsInterrupted(true,
+ new InterruptedIOException("ioirq"));
+ }
+
+ @Test(expected = InterruptedIOException.class)
+ public void testExtractInterrupted() throws Throwable {
+ throw extractException("", "",
+ new ExecutionException(
+ new AmazonClientException(
+ new InterruptedException(""))));
+ }
+
+ @Test(expected = InterruptedIOException.class)
+ public void testExtractInterruptedIO() throws Throwable {
+ throw extractException("", "",
+ new ExecutionException(
+ new AmazonClientException(
+ new InterruptedIOException(""))));
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org