Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Lucene.Net 2.9.2
-
None
-
Lucene 2.9.2
Description
I've isolated the issue to a pretty small test case [below].
Under the covers, it looks like NrtIsCurrent is returning 'true' incorrectly when documents are deleted & then committed [but before any other documents are added].
Please let me know if any addition data is needed to repro. Thanks, Paul
Lucene.Net.Store.RAMDirectory ramDir = new Lucene.Net.Store.RAMDirectory();
Lucene.Net.Index.IndexWriter writer = new Lucene.Net.Index.IndexWriter(ramDir, new Lucene.Net.Analysis.KeywordAnalyzer(), true, new Lucene.Net.Index.IndexWriter.MaxFieldLength(1000) );
Lucene.Net.Documents.Field field = new Lucene.Net.Documents.Field("TEST", "mytest",
Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED);
Lucene.Net.Documents.Document doc = new Lucene.Net.Documents.Document();
doc.Add(field);
writer.AddDocument(doc);
Lucene.Net.Index.IndexReader reader = writer.GetReader();
writer.DeleteDocuments(new Lucene.Net.Index.Term("TEST", "mytest"));
bool iscurrent1 = reader.IsCurrent(); // FALSE as expected
writer.Commit();
bool iscurrent2 = reader.IsCurrent(); // returns TRUE now - Incorrect
System.Diagnostics.Debug.Assert(iscurrent1 == iscurrent2); // ASSERT FAILs