You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2013/11/06 14:28:02 UTC

svn commit: r1539335 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/CHANGES.txt lucene/core/ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java

Author: simonw
Date: Wed Nov  6 13:28:01 2013
New Revision: 1539335

URL: http://svn.apache.org/r1539335
Log:
LUCENE-5330: Fix IndexWriter to process all internal events on getReader / close / rollback

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (contents, 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
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java

Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1539335&r1=1539334&r2=1539335&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Wed Nov  6 13:28:01 2013
@@ -133,6 +133,11 @@ Bug Fixes
   inside ConstantScoreQuery, which now rewrites to a query removing the
   obsolete QueryWrapperFilter.  (Adrien Grand, Uwe Schindler)
 
+* LUCENE-5330: IndexWriter didn't process all internal events on 
+  #getReader(), #close() and #rollback() which causes files to be
+  deleted at a later point in time. This could cause short-term disk
+  pollution or OOM if in-memory directories are used. (Simon Willnauer)
+
 API Changes:
 
 * LUCENE-5222: Add SortField.needsScores(). Previously it was not possible

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=1539335&r1=1539334&r2=1539335&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 Wed Nov  6 13:28:01 2013
@@ -396,6 +396,7 @@ public class IndexWriter implements Clos
           }
           // Done: finish the full flush!
           docWriter.finishFullFlush(success);
+          processEvents(false, true);
           doAfterFlush();
         }
       }
@@ -930,6 +931,7 @@ public class IndexWriter implements Clos
           closeInternal(waitForMerges, true);
         }
       }
+      assert eventQueue.isEmpty();
     }
   }
 
@@ -1062,6 +1064,7 @@ public class IndexWriter implements Clos
       }
       // finally, restore interrupt status:
       if (interrupted) Thread.currentThread().interrupt();
+      processEvents(false, true);
     }
   }
 
@@ -2021,6 +2024,7 @@ public class IndexWriter implements Clos
         rollbackInternal();
       }
     }
+    assert eventQueue.isEmpty() : eventQueue;
   }
 
   private void rollbackInternal() throws IOException {

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1539335&r1=1539334&r2=1539335&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Wed Nov  6 13:28:01 2013
@@ -1391,7 +1391,19 @@ public class TestIndexWriter extends Luc
       }
 
       List<String> files = Arrays.asList(dir.listAll());
+
       assertTrue(files.contains("_0.cfs"));
+      assertTrue(files.contains("_0.cfe"));
+      assertTrue(files.contains("_0.si"));
+      if (iter == 1) {
+        // we run a full commit so there should be a segments file etc.
+        assertTrue(files.contains("segments_1"));
+        assertTrue(files.contains("segments.gen"));
+        assertEquals(files.toString(), files.size(), 5);
+      } else {
+        // this is an NRT reopen - no segments files yet
+        assertEquals(files.toString(), files.size(), 3);
+      }
       w.addDocument(doc);
       w.forceMerge(1);
       if (iter == 1) {