You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Alex Parvulescu (JIRA)" <ji...@apache.org> on 2015/04/21 16:01:59 UTC

[jira] [Commented] (OAK-2794) Lucene index: after.doc exceeds the number of documents in the reader

    [ https://issues.apache.org/jira/browse/OAK-2794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14504987#comment-14504987 ] 

Alex Parvulescu commented on OAK-2794:
--------------------------------------

duplicate of OAK-2569?

> 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)