You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/10/05 14:01:23 UTC
svn commit: r1394464 -
/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
Author: mikemccand
Date: Fri Oct 5 12:01:23 2012
New Revision: 1394464
URL: http://svn.apache.org/viewvc?rev=1394464&view=rev
Log:
LUCENE-4456: close merged readers first, then checkpoint
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=1394464&r1=1394463&r2=1394464&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 Fri Oct 5 12:01:23 2012
@@ -3211,15 +3211,27 @@ public class IndexWriter implements Clos
deleter.deleteNewFiles(merge.info.files());
}
- // Must note the change to segmentInfos so any commits
- // in-flight don't lose it (IFD will incRef/protect the
- // new files we created):
- checkpoint();
-
- // Must close before checkpoint, otherwise IFD won't be
- // able to delete the held-open files from the merge
- // readers:
- closeMergeReaders(merge, false);
+ boolean success = false;
+ try {
+ // Must close before checkpoint, otherwise IFD won't be
+ // able to delete the held-open files from the merge
+ // readers:
+ closeMergeReaders(merge, false);
+ success = true;
+ } finally {
+ // Must note the change to segmentInfos so any commits
+ // in-flight don't lose it (IFD will incRef/protect the
+ // new files we created):
+ if (success) {
+ checkpoint();
+ } else {
+ try {
+ checkpoint();
+ } catch (Throwable t) {
+ // Ignore so we keep throwing original exception.
+ }
+ }
+ }
deleter.deletePendingFiles();