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 "Chetan Mehrotra (JIRA)" <ji...@apache.org> on 2015/04/21 06:01:00 UTC
[jira] [Commented] (OAK-2569) LuceneIndex#loadDocs can throw
IllegalArgumentException
[ https://issues.apache.org/jira/browse/OAK-2569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14504275#comment-14504275 ]
Chetan Mehrotra commented on OAK-2569:
--------------------------------------
[~alex.parvulescu] your following comment (on a similar) issue made me thinking!!
{quote}
My original idea was to try to cut the search short if the upper limit is reached,
{quote}
I think we can keep the solution simple by catching the exception and then perform the search again without any offset in case of exception. As we alread keep a set of {{seenPaths}} duplicate results would be filtered out. The fix might be simple but key thing would be to come up with a test case reproducing the issue ;)
> LuceneIndex#loadDocs can throw IllegalArgumentException
> -------------------------------------------------------
>
> Key: OAK-2569
> URL: https://issues.apache.org/jira/browse/OAK-2569
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: lucene
> Affects Versions: 1.1.6
> Reporter: Alex Parvulescu
> Fix For: 1.4
>
>
> It looks like in some cases a IllegalArgumentException will be thrown if the _nextBatchSize_ passed to the _searchAfter_ method call is smaller than the current searcher limit (_lastDoc.doc_).
> Stack trace for the failure:
> {code}
> java.lang.IllegalArgumentException: after.doc exceeds the number of documents in the reader: after.doc=387045 limit=386661
> 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:1055)
> 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:1076)
> 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:389)
> at org.apache.jackrabbit.oak.spi.query.Cursors$IntersectionCursor.hasNext(Cursors.java:381)
> at org.apache.jackrabbit.oak.spi.query.Cursors$IntersectionCursor.fetchNext(Cursors.java:389)
> at org.apache.jackrabbit.oak.spi.query.Cursors$IntersectionCursor.hasNext(Cursors.java:381)
> at org.apache.jackrabbit.oak.spi.query.Cursors$IntersectionCursor.fetchNext(Cursors.java:389)
> 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)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)