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 "Thomas Mueller (JIRA)" <ji...@apache.org> on 2016/11/17 14:08:59 UTC
[jira] [Commented] (OAK-4602) IndexOutOfBoundsException when
sorting by jcr:score + field
[ https://issues.apache.org/jira/browse/OAK-4602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15673816#comment-15673816 ]
Thomas Mueller commented on OAK-4602:
-------------------------------------
It only happens if the sort order includes "jcr:score", plus at least one field that has an ordered index on that field.
> IndexOutOfBoundsException when sorting by jcr:score + field
> -----------------------------------------------------------
>
> Key: OAK-4602
> URL: https://issues.apache.org/jira/browse/OAK-4602
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: lucene
> Affects Versions: 1.4.1
> Environment: AEM 6.1, 6.2
> Reporter: Sham
> Assignee: Thomas Mueller
> Fix For: 1.6, 1.5.14
>
>
> The quert written in jackrabbit sort by not working with oak. Samples order by which fails is [0] & stack trace at [2]. If I change the sort [1] it works & issue reproducible on any oak branch also, Additional This happens only with custom index definition. The exact query & index definition at [3].
> [0]
> {noformat}
> order by @jcr:score descending, post/@pubDate descending
> order by @jcr:score,post/@pubDate descending
> {noformat}
> [1]
> {noformat}
> order by post/@pubDate descending,@jcr:score descending
> {noformat}
> [2]
> {noformat}
> java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
> at java.util.ArrayList.rangeCheck(ArrayList.java:653)
> at java.util.ArrayList.get(ArrayList.java:429)
> at org.apache.jackrabbit.oak.plugins.index.lucene.IndexPlanner$PlanResult.getOrderedProperty(IndexPlanner.java:540)
> at org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex.getSort(LucenePropertyIndex.java:605)
> at org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex.query(LucenePropertyIndex.java:281)
> at org.apache.jackrabbit.oak.query.ast.SelectorImpl.execute(SelectorImpl.java:329)
> at org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.fetchNext(QueryImpl.java:769)
> at org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.hasNext(QueryImpl.java:798)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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 com.google.common.collect.Iterators$5.hasNext(Iterators.java:542)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.fetchNext(FilterIterators.java:137)
> at org.apache.jackrabbit.oak.query.FilterIterators$DistinctIterator.hasNext(FilterIterators.java:151)
> 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$3.fetch(QueryResultImpl.java:181)
> at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl$3.<init>(QueryResultImpl.java:176)
> at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl.getNodes(QueryResultImpl.java:170)
> at com.adobe.granite.queries.impl.explain.query.ExplainQueryServlet.executionTimes(ExplainQueryServlet.java:331)
> {noformat}
> [3]
> {noformat}
> /jcr:root/content//element(*, cq:PageContent)
> [(jcr:contains(post/@headingText, 'geometrixx')
> or jcr:contains(jcr:title, 'geometrixx')
> or jcr:contains(pageTitle, 'geometrixx')
> or jcr:contains(title, 'geometrixx')
> or jcr:contains(cq:tags, 'geometrixx')
> or jcr:contains(post/@subheadingText, 'geometrixx')
> or jcr:contains(post/par/*, 'geometrixx')
> or jcr:contains(post/@authorName, 'geometrixx'))]
> order by @jcr:score descending, post/@pubDate descending
> {noformat}
> {noformat}
> {
> "jcr:primaryType":"oak:QueryIndexDefinition",
> "compatVersion":2,
> "type":"lucene",
> "async":"async",
> "evaluatePathRestrictions":true,
> "excludedPaths":[
> "/jcr:system",
> "/etc",
> "/var"
> ],
> "reindex":false,
> "reindexCount":5,
> "aggregates":{
> "jcr:primaryType":"nt:unstructured",
> "cq:PageContent":{
> "jcr:primaryType":"nt:unstructured",
> "postParsys":{
> "jcr:primaryType":"nt:unstructured",
> "relativeNode":true,
> "path":"post/par/*/richText"
> },
> "include3":{
> "jcr:primaryType":"nt:unstructured",
> "relativeNode":true,
> "path":"cq:tags"
> },
> "include2":{
> "jcr:primaryType":"nt:unstructured",
> "relativeNode":true,
> "path":"title"
> },
> "include1":{
> "jcr:primaryType":"nt:unstructured",
> "relativeNode":true,
> "path":"pageTitle"
> },
> "include0":{
> "jcr:primaryType":"nt:unstructured",
> "relativeNode":true,
> "path":"jcr:title"
> }
> }
> },
> "indexRules":{
> "jcr:primaryType":"nt:unstructured",
> "cq:PageContent":{
> "jcr:primaryType":"nt:unstructured",
> "properties":{
> "jcr:primaryType":"nt:unstructured",
> "postHeadingText":{
> "jcr:primaryType":"nt:unstructured",
> "analyzed":true,
> "name":"post/headingText",
> "type":"String"
> },
> "postSubHeadingText":{
> "jcr:primaryType":"nt:unstructured",
> "analyzed":true,
> "name":"post/subheadingText",
> "type":"String"
> },
> "postAuthorName":{
> "jcr:primaryType":"nt:unstructured",
> "analyzed":true,
> "name":"post/authorName",
> "type":"String"
> },
> "pubDate":{
> "jcr:primaryType":"nt:unstructured",
> "ordered":true,
> "direction":"descending",
> "name":"post/pubDate",
> "type":"Date"
> }
> }
> }
> }
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)