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) {