I did some searches for this issue and didn't find anything. Apologies
if this is known. 

I am calling IndexWriter.GetReader() from an IndexWriter instance which
is getting used in a multithreaded scenario. I want to do real-time
searches against potentially uncommitted documents. My indexing
infrastructure keeps only one IndexWriter open at a time (of course).

Works great except that very rarely the request to GetReader() will
throw a NullReferenceException. Here is the stack trace: 

System.NullReferenceException: Object reference not set to an instance
of an object.
   at Lucene.Net.Index.SegmentReader.Norm.Clone()
   at Lucene.Net.Index.SegmentReader.ReopenSegment(SegmentInfo si,
Boolean doClone, Boolean openReadOnly)
   at Lucene.Net.Index.SegmentReader.Clone(Boolean openReadOnly)
   at
Lucene.Net.Index.IndexWriter.ReaderPool.GetReadOnlyClone(SegmentInfo
info, Boolean doOpenStores, Int32 termInfosIndexDivisor)
   at Lucene.Net.Index.DirectoryReader..ctor(IndexWriter writer,
SegmentInfos infos, Int32 termInfosIndexDivisor)
   at Lucene.Net.Index.IndexWriter.GetReader(Int32
termInfosIndexDivisor)
   at Lucene.Net.Index.IndexWriter.GetReader()
   at Dovetail.Search.Indexing.IndexWriterWrapper.withSearcher[T](Func`2
func)
   at
Dovetail.Search.Indexing.LuceneDocumentFinder.GetDocumentByUrl(String
uri)
   at ...

For context. My withSearcher<T> code: 

public T withSearcher<T>(Func<IndexSearcher, T> func)
{
        var indexReader = _indexWriter.GetReader();
        var searcher = new IndexSearcher(indexReader);

        try
        {
                return func(searcher);
        }
        finally
        {
                searcher.Close();
                indexReader.Close();
        }
}

If it helps I am using a FSDirectory. Any suggestions? Or ideas how I
might better characterize this? 

I can work around by switching back to searching on committed documents
via a search created from a read-only IndexReader from a Directory. I
wanted to do real time searches to avoid explicit commits (which are not
always necessary) in my indexing workflow.  

Kevin @ Dovetail Software

-----Original Message-----


Reply via email to