Index: lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java =================================================================== --- lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (revision 1404215) +++ lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (working copy) @@ -39,6 +39,7 @@ 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 @@ 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(); + } } Index: lucene/core/src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (revision 1404215) +++ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -1320,6 +1320,10 @@ 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;