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:09:27 UTC
svn commit: r1364931 -
/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
Author: uschindler
Date: Tue Jul 24 08:09:27 2012
New Revision: 1364931
URL: http://svn.apache.org/viewvc?rev=1364931&view=rev
Log:
LUCENE-4245: use IOUtils to close everything in finally block
Modified:
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1364931&r1=1364930&r2=1364931&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Tue Jul 24 08:09:27 2012
@@ -893,45 +893,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")) {