Uploaded image for project: 'Lucene.Net'
  1. Lucene.Net
  2. LUCENENET-374

IndexReader.IsCurrent returning false positive in some cases

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Lucene.Net 2.9.2
    • Lucene.Net 2.9.4
    • Lucene.Net Core
    • 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

      Attachments

        1. SegmentInfo.patch
          0.4 kB
          Digy

        Activity

          People

            Unassigned Unassigned
            paul.gunn Paul Gunn
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: