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 cu...@apache.org on 2018/01/18 23:47:42 UTC
[11/49] hadoop git commit: HADOOP-15114. Add closeStreams(...) to
IOUtils. Contributed by Ajay Kumar.
HADOOP-15114. Add closeStreams(...) to IOUtils. Contributed by Ajay Kumar.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/addbcd8c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/addbcd8c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/addbcd8c
Branch: refs/heads/YARN-7402
Commit: addbcd8cd44de25f9fcb1920183155609908aa91
Parents: bc285da
Author: Arpit Agarwal <ar...@apache.org>
Authored: Thu Jan 11 16:50:21 2018 -0800
Committer: Arpit Agarwal <ar...@apache.org>
Committed: Thu Jan 11 16:50:21 2018 -0800
----------------------------------------------------------------------
.../main/java/org/apache/hadoop/io/IOUtils.java | 14 ++++++-
.../java/org/apache/hadoop/io/TestIOUtils.java | 39 ++++++++++++++++++++
2 files changed, 52 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/addbcd8c/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/IOUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/IOUtils.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/IOUtils.java
index 46ea1c8..4684fb6 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/IOUtils.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/IOUtils.java
@@ -296,7 +296,19 @@ public class IOUtils {
cleanupWithLogger(null, stream);
}
}
-
+
+ /**
+ * Closes the streams ignoring {@link Throwable}.
+ * Must only be called in cleaning up from exception handlers.
+ *
+ * @param streams the Streams to close
+ */
+ public static void closeStreams(java.io.Closeable... streams) {
+ if (streams != null) {
+ cleanupWithLogger(null, streams);
+ }
+ }
+
/**
* Closes the socket ignoring {@link IOException}
*
http://git-wip-us.apache.org/repos/asf/hadoop/blob/addbcd8c/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
index cac73bd..f8b5a48 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestIOUtils.java
@@ -21,9 +21,11 @@ package org.apache.hadoop.io;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.EOFException;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
@@ -41,12 +43,15 @@ import org.apache.hadoop.test.GenericTestUtils;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Test cases for IOUtils.java
*/
public class TestIOUtils {
private static final String TEST_FILE_NAME = "test_file";
+ private static final Logger LOG = LoggerFactory.getLogger(TestIOUtils.class);
@Test
public void testCopyBytesShouldCloseStreamsWhenCloseIsTrue() throws Exception {
@@ -289,4 +294,38 @@ public class TestIOUtils {
FileUtils.deleteDirectory(dir);
}
}
+
+ @Test
+ public void testCloseStreams() {
+ File tmpFile = new File("deleteMe.txt");
+ FileOutputStream fos = null;
+ BufferedOutputStream bos = null;
+ FileOutputStream nullStream = null;
+
+ try {
+ fos = new FileOutputStream(tmpFile) {
+ @Override
+ public void close() throws IOException {
+ throw new IOException();
+ }
+ };
+ bos = new BufferedOutputStream(
+ new FileOutputStream(tmpFile)) {
+ @Override
+ public void close() throws IOException {
+ throw new NullPointerException();
+ }
+ };
+ } catch (IOException ioe) {
+ LOG.warn("Exception in TestIOUtils.testCloseStreams: ", ioe);
+ }
+ try {
+ IOUtils.closeStreams(fos, bos, nullStream);
+ IOUtils.closeStreams();
+ } catch (Exception ex) {
+ LOG.error("Expect IOUtils.closeStreams to close streams quietly.", ex);
+ throw ex;
+ }
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org