浏览代码

HADOOP-10615. FileInputStream in JenkinsHash#main() is never closed. Contributed by Chen He.

Tsuyoshi Ozawa 9 年之前
父节点
当前提交
111e6a3fdf

+ 3 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -961,6 +961,9 @@ Release 2.8.0 - UNRELEASED
     HADOOP-12200. TestCryptoStreamsWithOpensslAesCtrCryptoCodec should be
     skipped in non-native profile. (Masatake Iwasaki via aajisaka)
 
+    HADOOP-10615. FileInputStream in JenkinsHash#main() is never closed.
+    (Chen He via ozawa)
+
 Release 2.7.2 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 8 - 7
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/hash/JenkinsHash.java

@@ -252,13 +252,14 @@ public class JenkinsHash extends Hash {
       System.err.println("Usage: JenkinsHash filename");
       System.exit(-1);
     }
-    FileInputStream in = new FileInputStream(args[0]);
-    byte[] bytes = new byte[512];
-    int value = 0;
-    JenkinsHash hash = new JenkinsHash();
-    for (int length = in.read(bytes); length > 0 ; length = in.read(bytes)) {
-      value = hash.hash(bytes, length, value);
+    try (FileInputStream in = new FileInputStream(args[0])) {
+      byte[] bytes = new byte[512];
+      int value = 0;
+      JenkinsHash hash = new JenkinsHash();
+      for (int length = in.read(bytes); length > 0; length = in.read(bytes)) {
+        value = hash.hash(bytes, length, value);
+      }
+      System.out.println(Math.abs(value));
     }
-    System.out.println(Math.abs(value));
   }
 }