Description
When ChildAxisQuery#advance is invoked, then the following while loop:
while (nextDoc > -1 && !indexIsValid(nextDoc)) {
nextDoc();
}
easily results in stacktrace below. This is because nextDoc returns NO_MORE_DOCS (Integer.MAX_VALUE) in case there are no hits any more, which results in IllegalArgumentException in indexIsValid
java.lang.IllegalArgumentException: docID must be >= 0 and < maxDoc=3
(got docID=2147483158)
at org.apache.lucene.index.SegmentReader.document(SegmentReader.java:490)
at org.apache.lucene.index.DirectoryReader.document(DirectoryReader.java:568)
at org.apache.lucene.index.FilterIndexReader.document(FilterIndexReader.java:186)
at org.apache.jackrabbit.core.query.lucene.CachingIndexReader.document(CachingIndexReader.java:291)
at org.apache.lucene.index.FilterIndexReader.document(FilterIndexReader.java:186)
at org.apache.lucene.index.FilterIndexReader.document(FilterIndexReader.java:186)
at org.apache.lucene.index.MultiReader.document(MultiReader.java:252)
at org.apache.lucene.index.FilterIndexReader.document(FilterIndexReader.java:186)
at org.apache.jackrabbit.core.query.lucene.ChildAxisQuery$ChildAxisScorer.indexIsValid(ChildAxisQuery.java:488)
at org.apache.jackrabbit.core.query.lucene.ChildAxisQuery$ChildAxisScorer.advance(ChildAxisQuery.java:433)