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 2012/07/24 10:10:44 UTC

svn commit: r1364932 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/core/ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java

Author: uschindler
Date: Tue Jul 24 08:10:43 2012
New Revision: 1364932

URL: http://svn.apache.org/viewvc?rev=1364932&view=rev
Log:
Merged revision(s) 1364931 from lucene/dev/trunk:
LUCENE-4245: use IOUtils to close everything in finally block

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1364932&r1=1364931&r2=1364932&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Tue Jul 24 08:10:43 2012
@@ -895,45 +895,46 @@ public class IndexWriter implements Clos
         }
         
       } finally {
-        // clean up merge scheduler in all cases, although flushing may have failed:
-        interrupted = Thread.interrupted();
-      
-        if (waitForMerges) {
-          try {
-            // Give merge scheduler last chance to run, in case
-            // any pending merges are waiting:
-            mergeScheduler.merge(this);
-          } catch (ThreadInterruptedException tie) {
-            // ignore any interruption, does not matter
-            interrupted = true;
-            if (infoStream.isEnabled("IW")) {
-              infoStream.message("IW", "interrupted while waiting for final merges");
-            }
-          }
-        }
+        try {
+          // clean up merge scheduler in all cases, although flushing may have failed:
+          interrupted = Thread.interrupted();
         
-        mergePolicy.close();
-
-        synchronized(this) {
-          for (;;) {
+          if (waitForMerges) {
             try {
-              finishMerges(waitForMerges && !interrupted);
-              break;
+              // Give merge scheduler last chance to run, in case
+              // any pending merges are waiting:
+              mergeScheduler.merge(this);
             } catch (ThreadInterruptedException tie) {
-              // by setting the interrupted status, the
-              // next call to finishMerges will pass false,
-              // so it will not wait
+              // ignore any interruption, does not matter
               interrupted = true;
               if (infoStream.isEnabled("IW")) {
-                infoStream.message("IW", "interrupted while waiting for merges to finish");
+                infoStream.message("IW", "interrupted while waiting for final merges");
               }
             }
           }
-          stopMerges = true;
+          
+          synchronized(this) {
+            for (;;) {
+              try {
+                finishMerges(waitForMerges && !interrupted);
+                break;
+              } catch (ThreadInterruptedException tie) {
+                // by setting the interrupted status, the
+                // next call to finishMerges will pass false,
+                // so it will not wait
+                interrupted = true;
+                if (infoStream.isEnabled("IW")) {
+                  infoStream.message("IW", "interrupted while waiting for merges to finish");
+                }
+              }
+            }
+            stopMerges = true;
+          }
+          
+        } finally {
+          // shutdown policy, scheduler and all threads (this call is not interruptible):
+          IOUtils.closeWhileHandlingException(mergePolicy, mergeScheduler);
         }
-        
-        // shutdown scheduler and all threads (this call is not interruptible):
-        mergeScheduler.close();
       }
 
       if (infoStream.isEnabled("IW")) {