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/31 17:21:14 UTC
svn commit: r1404227 - in /lucene/dev/branches/branch_4x/lucene: CHANGES.txt
core/src/java/org/apache/lucene/index/IndexWriter.java
core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
Author: mikemccand
Date: Wed Oct 31 16:21:13 2012
New Revision: 1404227
URL: http://svn.apache.org/viewvc?rev=1404227&view=rev
Log:
LUCENE-4521: make sure we commit new del file if tryDeleteDocument succeeds but IW has no other pending changes
Modified:
lucene/dev/branches/branch_4x/lucene/CHANGES.txt
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/TestIndexWriterDelete.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=1404227&r1=1404226&r2=1404227&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Wed Oct 31 16:21:13 2012
@@ -91,6 +91,12 @@ Bug Fixes
* LUCENE-4511: TermsFilter might return wrong results if a field is not
indexed or doesn't exist in the index. (Simon Willnauer)
+* LUCENE-4521: IndexWriter.tryDeleteDocument could return true
+ (successfully deleting the document) but then on IndexWriter
+ close/commit fail to write the new deletions, if no other changes
+ happened in the IndexWriter instance. (Ivan Vasilev via Mike
+ McCandless)
+
Optimizations
* LUCENE-4512: Additional memory savings for CompressingStoredFieldsIndex.MEMORY_CHUNK
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=1404227&r1=1404226&r2=1404227&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 Oct 31 16:21:13 2012
@@ -1320,6 +1320,10 @@ public class IndexWriter implements Clos
checkpoint();
}
}
+
+ // Must bump changeCount so if no other changes
+ // happened, we still commit this change:
+ changeCount++;
}
//System.out.println(" yes " + info.info.name + " " + docID);
return true;
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java?rev=1404227&r1=1404226&r2=1404227&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java Wed Oct 31 16:21:13 2012
@@ -39,6 +39,7 @@ import org.apache.lucene.search.TermQuer
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.util.Bits;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
@@ -1116,4 +1117,32 @@ public class TestIndexWriterDelete exten
assertFalse(s.contains("has deletions"));
dir.close();
}
+
+ public void testTryDeleteDocument() throws Exception {
+
+ Directory d = newDirectory();
+
+ IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+ IndexWriter w = new IndexWriter(d, iwc);
+ Document doc = new Document();
+ w.addDocument(doc);
+ w.addDocument(doc);
+ w.addDocument(doc);
+ w.close();
+
+ iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+ iwc.setOpenMode(IndexWriterConfig.OpenMode.APPEND);
+ w = new IndexWriter(d, iwc);
+ IndexReader r = DirectoryReader.open(w, false);
+ assertTrue(w.tryDeleteDocument(r, 1));
+ assertTrue(w.tryDeleteDocument(r.leaves().get(0).reader(), 0));
+ r.close();
+ w.close();
+
+ r = DirectoryReader.open(d);
+ assertEquals(2, r.numDeletedDocs());
+ assertNotNull(MultiFields.getLiveDocs(r));
+ r.close();
+ d.close();
+ }
}