HADOOP-10517. InputStream is not closed in two methods of JarFinder. Contributed by Ted Yu.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1592855 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris Nauroth 2014-05-06 19:49:38 +00:00
parent 0ba580e9e3
commit a6d19c51a1
2 changed files with 21 additions and 13 deletions

View File

@ -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

View File

@ -39,17 +39,24 @@
*/
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 static void jarDir(File dir, String relativePath, ZipOutputStream zos)
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 @@ private static void zipDir(File dir, String relativePath, ZipOutputStream zos,
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);
}
}
}