NPE from SegmentTermDocs.<init> from SegmentReader.termDocs [LUCENE-3567]
- Dominant language
- Java
- Stars
- 3.6k
- Forks
- 1.4k
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 88
Description
Occasionally NetBeans IDE users receive an NPE from Lucene 3.0.3 inside Maven Indexer (currently 4.1.2) code:
```Java
java.lang.NullPointerException
at org.apache.lucene.index.SegmentTermDocs.(SegmentTermDocs.java:52)
at org.apache.lucene.index.SegmentReader.termDocs(SegmentReader.java:963)
at org.apache.lucene.index.IndexReader.termDocs(IndexReader.java:813)
at org.apache.lucene.index.SegmentReader.termDocs(SegmentReader.java:956)
at org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:74)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:210)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:170)
at org.apache.lucene.search.Searcher.search(Searcher.java:98)
at org.apache.lucene.search.Searcher.search(Searcher.java:108)
at org.apache.maven.index.DefaultIndexerEngine.getOldDocument(DefaultIndexerEngine.java:158)
....
```
Working backwards, `parent.core.getTermsReader()` is null, which means `SegmentReaders.CoreReaders.decRef` was called, which means `SegmentReader.doClose` was called, which means `IndexReader.doClose` was called, which I suppose means something called `IndexReader.decRef` prematurely. But plenty of things can call `IndexReader.decRef` and it is not clear how to track down the root cause.
Note that `SegmentReader.termDocs` first calls `ensureOpen()`, which is presumably supposed to ensure that `decRef` had not been called too many times; perhaps this assertion did not work?
Downstream bug, for reference: https://netbeans.org/bugzilla/show_bug.cgi?id=201057
---
Migrated from [LUCENE-3567](https://issues.apache.org/jira/browse/LUCENE-3567) by Jesse Glick, updated Nov 15 2011
Environment:
```
various OS and JRE combos: http://statistics.netbeans.org/exceptions/detail.do?id=180686
```
Contributor guide
Assessment
This issue has not been assessed yet.