Thomas Mueller created OAK-2794:
-----------------------------------

             Summary: Lucene index: after.doc exceeds the number of documents 
in the reader
                 Key: OAK-2794
                 URL: https://issues.apache.org/jira/browse/OAK-2794
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: lucene, query
            Reporter: Thomas Mueller


The following exception can occur:

{noformat}
java.lang.IllegalArgumentException: after.doc exceeds the number of documents 
in the reader: after.doc=2027462 limit=2027455
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:442)
        at 
org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:243)
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndex$1.loadDocs(LuceneIndex.java:352)
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndex$1.computeNext(LuceneIndex.java:292)
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndex$1.computeNext(LuceneIndex.java:283)
        at 
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
        at 
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndex$LucenePathCursor$1.hasNext(LuceneIndex.java:1062)
        at com.google.common.collect.Iterators$7.computeNext(Iterators.java:645)
        at 
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
        at 
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
        at 
org.apache.jackrabbit.oak.spi.query.Cursors$PathCursor.hasNext(Cursors.java:198)
        at 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndex$LucenePathCursor.hasNext(LuceneIndex.java:1083)
        at 
org.apache.jackrabbit.oak.plugins.index.aggregate.AggregationCursor.fetchNext(AggregationCursor.java:88)
        at 
org.apache.jackrabbit.oak.plugins.index.aggregate.AggregationCursor.hasNext(AggregationCursor.java:75)
        at 
org.apache.jackrabbit.oak.spi.query.Cursors$IntersectionCursor.fetchNext(Cursors.java:403)
        at 
org.apache.jackrabbit.oak.spi.query.Cursors$IntersectionCursor.hasNext(Cursors.java:381)
        at 
org.apache.jackrabbit.oak.query.ast.SelectorImpl.next(SelectorImpl.java:401)
        at 
org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.fetchNext(QueryImpl.java:664)
        at 
org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.hasNext(QueryImpl.java:689)
        at 
org.apache.jackrabbit.oak.query.FilterIterators$SortIterator.init(FilterIterators.java:203)
        at 
org.apache.jackrabbit.oak.query.FilterIterators$SortIterator.hasNext(FilterIterators.java:237)
        at 
org.apache.jackrabbit.oak.jcr.query.QueryResultImpl$1.fetch(QueryResultImpl.java:108)
        at 
org.apache.jackrabbit.oak.jcr.query.QueryResultImpl$1.<init>(QueryResultImpl.java:104)
        at 
org.apache.jackrabbit.oak.jcr.query.QueryResultImpl.getRows(QueryResultImpl.java:91)
        at org.apache.jackrabbit.commons.query.GQL.executeJcrQuery(GQL.java:440)
        at org.apache.jackrabbit.commons.query.GQL.execute(GQL.java:434)
        at org.apache.jackrabbit.commons.query.GQL.execute(GQL.java:327)
        at org.apache.jackrabbit.commons.query.GQL.execute(GQL.java:310)
        at org.apache.jackrabbit.commons.query.GQL.execute(GQL.java:296)
{noformat}

I guess the reason is that the "lastDoc" is part of the iterator, but the 
"IndexSearcher" is not always the same, so that if there were changes in the 
meantime, the "lastDoc" does not correspond to this "IndexSearcher". This might 
mean the query result is sometimes wrong (matches are not returned, or returned 
twice).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to