Author: cnauroth
Date: Tue May 6 19:49:38 2014
New Revision: 1592855
URL: http://svn.apache.org/r1592855
Log:
HADOOP-10517. InputStream is not closed in two methods of JarFinder.
Contributed by Ted Yu.
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1592855&r1=1592854&r2=1592855&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Tue May
6 19:49:38 2014
@@ -446,6 +446,9 @@ Release 2.5.0 - UNRELEASED
HADOOP-10541. InputStream in MiniKdc#initKDCServer for minikdc.ldiff is not
closed. (Swarnim Kulkarni via cnauroth)
+ HADOOP-10517. InputStream is not closed in two methods of JarFinder.
+ (Ted Yu via cnauroth)
+
Release 2.4.1 - UNRELEASED
INCOMPATIBLE CHANGES
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java?rev=1592855&r1=1592854&r2=1592855&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/JarFinder.java
Tue May 6 19:49:38 2014
@@ -39,17 +39,24 @@ import java.util.zip.ZipOutputStream;
*/
public class JarFinder {
- private static void copyToZipStream(InputStream is, ZipEntry entry,
+ private static void copyToZipStream(File file, ZipEntry entry,
ZipOutputStream zos) throws IOException {
- zos.putNextEntry(entry);
- byte[] arr = new byte[4096];
- int read = is.read(arr);
- while (read > -1) {
- zos.write(arr, 0, read);
- read = is.read(arr);
+ InputStream is = new FileInputStream(file);
+ try {
+ zos.putNextEntry(entry);
+ byte[] arr = new byte[4096];
+ int read = is.read(arr);
+ while (read > -1) {
+ zos.write(arr, 0, read);
+ read = is.read(arr);
+ }
+ } finally {
+ try {
+ is.close();
+ } finally {
+ zos.closeEntry();
+ }
}
- is.close();
- zos.closeEntry();
}
public static void jarDir(File dir, String relativePath, ZipOutputStream zos)
@@ -66,8 +73,7 @@ public class JarFinder {
new Manifest().write(new BufferedOutputStream(zos));
zos.closeEntry();
} else {
- InputStream is = new FileInputStream(manifestFile);
- copyToZipStream(is, manifestEntry, zos);
+ copyToZipStream(manifestFile, manifestEntry, zos);
}
zos.closeEntry();
zipDir(dir, relativePath, zos, true);
@@ -94,8 +100,7 @@ public class JarFinder {
String path = relativePath + f.getName();
if (!path.equals(JarFile.MANIFEST_NAME)) {
ZipEntry anEntry = new ZipEntry(path);
- InputStream is = new FileInputStream(f);
- copyToZipStream(is, anEntry, zos);
+ copyToZipStream(f, anEntry, zos);
}
}
}