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/08 00:39:06 UTC

svn commit: r1395403 - in /lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index: IndexWriter.java SegmentInfos.java

Author: mikemccand
Date: Sun Oct  7 22:39:05 2012
New Revision: 1395403

URL: http://svn.apache.org/viewvc?rev=1395403&view=rev
Log:
also rollback commit if SegmentInfos.files(..) throws exc; delete segments file one exc during finishCommit

Modified:
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.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=1395403&r1=1395402&r2=1395403&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 Sun Oct  7 22:39:05 2012
@@ -4030,10 +4030,11 @@ public class IndexWriter implements Clos
         }
 
         // This call can take a long time -- 10s of seconds
-        // or more.  We do it without sync:
+        // or more.  We do it without syncing on this:
         boolean success = false;
-        final Collection<String> filesToSync = toSync.files(directory, false);
+        final Collection<String> filesToSync;
         try {
+          filesToSync = toSync.files(directory, false);
           directory.sync(filesToSync);
           success = true;
         } finally {

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java?rev=1395403&r1=1395402&r2=1395403&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java Sun Oct  7 22:39:05 2012
@@ -804,7 +804,7 @@ public final class SegmentInfos implemen
       success = true;
     } finally {
       if (!success) {
-        IOUtils.closeWhileHandlingException(pendingSegnOutput);
+        // Closes pendingSegnOutput & deletes partial segments_N:
         rollbackCommit(dir);
       } else {
         success = false;
@@ -813,12 +813,11 @@ public final class SegmentInfos implemen
           success = true;
         } finally {
           if (!success) {
-            final String segmentFileName = IndexFileNames.fileNameFromGeneration(IndexFileNames.SEGMENTS,
-                                                                                 "",
-                                                                                 generation);
-            IOUtils.deleteFilesIgnoringExceptions(dir, segmentFileName);
+            // Closes pendingSegnOutput & deletes partial segments_N:
+            rollbackCommit(dir);
+          } else {
+            pendingSegnOutput = null;
           }
-          pendingSegnOutput = null;
         }
       }
     }