You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2015/06/25 22:03:48 UTC

svn commit: r1687626 - in /lucene/dev/branches/branch_5x: ./ lucene/ lucene/CHANGES.txt lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java

Author: uschindler
Date: Thu Jun 25 20:03:48 2015
New Revision: 1687626

URL: http://svn.apache.org/r1687626
Log:
Merged revision(s) 1687624 from lucene/dev/trunk:
LUCENE-6608: Fix potential resource leak in BigramDictionary

Modified:
    lucene/dev/branches/branch_5x/   (props changed)
    lucene/dev/branches/branch_5x/lucene/   (props changed)
    lucene/dev/branches/branch_5x/lucene/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_5x/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java

Modified: lucene/dev/branches/branch_5x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/CHANGES.txt?rev=1687626&r1=1687625&r2=1687626&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/lucene/CHANGES.txt Thu Jun 25 20:03:48 2015
@@ -140,6 +140,9 @@ Bug fixes
 * LUCENE-6597: Geo3D's GeoCircle now supports a world-globe diameter.
   (Karl Wright via David Smiley)
 
+* LUCENE-6608: Fix potential resource leak in BigramDictionary.
+  (Rishabh Patel via Uwe Schindler)
+
 Changes in Runtime Behavior
 
 * LUCENE-6501: The subreader structure in ParallelCompositeReader

Modified: lucene/dev/branches/branch_5x/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java?rev=1687626&r1=1687625&r2=1687626&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java (original)
+++ lucene/dev/branches/branch_5x/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/hhmm/BigramDictionary.java Thu Jun 25 20:03:48 2015
@@ -65,7 +65,11 @@ class BigramDictionary extends AbstractD
         singleInstance.load();
       } catch (IOException e) {
         String dictRoot = AnalyzerProfile.ANALYSIS_DATA_DIR;
-        singleInstance.load(dictRoot);
+        try {
+          singleInstance.load(dictRoot);
+        } catch (IOException ioe) {
+          throw new RuntimeException(ioe);
+        }
       } catch (ClassNotFoundException e) {
         throw new RuntimeException(e);
       }
@@ -84,23 +88,19 @@ class BigramDictionary extends AbstractD
 
   private void loadFromInputStream(InputStream serialObjectInputStream)
       throws IOException, ClassNotFoundException {
-    ObjectInputStream input = new ObjectInputStream(serialObjectInputStream);
-    bigramHashTable = (long[]) input.readObject();
-    frequencyTable = (int[]) input.readObject();
-    // log.info("load bigram dict from serialization.");
-    input.close();
+    try (ObjectInputStream input = new ObjectInputStream(serialObjectInputStream)) {
+      bigramHashTable = (long[]) input.readObject();
+      frequencyTable = (int[]) input.readObject();
+      // log.info("load bigram dict from serialization.");
+    }
   }
 
-  private void saveToObj(Path serialObj) {
-    try {
-      ObjectOutputStream output = new ObjectOutputStream(Files.newOutputStream(
-          serialObj));
+  private void saveToObj(Path serialObj) throws IOException {
+    try (ObjectOutputStream output = new ObjectOutputStream(Files.newOutputStream(
+        serialObj))) {
       output.writeObject(bigramHashTable);
       output.writeObject(frequencyTable);
-      output.close();
       // log.info("serialize bigram dict.");
-    } catch (Exception e) {
-      // log.warn(e.getMessage());
     }
   }
 
@@ -109,7 +109,7 @@ class BigramDictionary extends AbstractD
     loadFromInputStream(input);
   }
 
-  private void load(String dictRoot) {
+  private void load(String dictRoot) throws IOException {
     String bigramDictPath = dictRoot + "/bigramdict.dct";
 
     Path serialObj = Paths.get(dictRoot + "/bigramdict.mem");