[ 
https://issues.apache.org/jira/browse/OAK-12051?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Mueller resolved OAK-12051.
----------------------------------
    Fix Version/s: 2.0.0
       Resolution: Fixed

> Sorting Unions by Score: NullPointerException
> ---------------------------------------------
>
>                 Key: OAK-12051
>                 URL: https://issues.apache.org/jira/browse/OAK-12051
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: query
>            Reporter: Marvin
>            Assignee: Thomas Mueller
>            Priority: Minor
>             Fix For: 2.0.0
>
>
> With ticket OAK-11949 we introduced the feature that union queries are sorted 
> by score, instead of simply concatenating them. However, turning on the 
> feature toggle causes NullPointerExceptions in some rare cases. The problem 
> occurs if there is a score column, but accessing a score of that column 
> returns Null. This can happen if, for example, there is a union between three 
> queries, of which at least one has scores, and at least one doesn't have, and 
> those two results are merged first. 
> {code:java}
> This happens when the product tests make the following request 
> /libs/granite/security/search/authorizables.json?offset=0&query=%7B"condition"%3A%5B%7B"named"%3A"testGroup07fe1bae-63c5-4fb1-8924-a345f2f4451c"%7D%5D%7D
>  and fails consistently causing 
> CreatePageAsAuthorUserIT#testCreatePageAsAuthor to fail. Query that 
> fails:[rep:Authorizable] as [a] /* property authorizableId indexDefinition: 
> /oak:index/authorizableId values: 
> 'testGroup07fe1bae-63c5-4fb1-8924-a345f2f4451c' estimatedCost: 2.0 */ union 
> [rep:Authorizable] as [a] /* property principalName indexDefinition: 
> /oak:index/principalName values: 
> 'testGroup07fe1bae-63c5-4fb1-8924-a345f2f4451c' estimatedCost: 2.0 */ union 
> [rep:Authorizable] as [a] /* lucene:authorizables indexDefinition: 
> /oak:index/authorizables estimatedEntries: 167 luceneQuery: :ancestors:/home 
> */ {code}
>  
> {code:java}
> [52.177.162.196 [1767767494687] GET 
> /libs/granite/security/search/authorizables.json HTTP/1.1] 
> org.apache.sling.servlets.resolver.internal.SlingServletResolver Original 
> error class java.lang.NullPointerException java.lang.NullPointerException: 
> Cannot invoke 
> "org.apache.jackrabbit.oak.api.PropertyValue.getValue(org.apache.jackrabbit.oak.api.Type)"
>  because "scoreValue" is null at 
> org.apache.jackrabbit.oak.query.UnionQueryImpl.getScoreFromRow(UnionQueryImpl.java:578)
>  [org.apache.jackrabbit.oak-core:1.88.0.T20251029163355-5d5086d] at 
> org.apache.jackrabbit.oak.query.UnionQueryImpl$2.compare(UnionQueryImpl.java:564)
>  [org.apache.jackrabbit.oak-core:1.88.0.T20251029163355-5d5086d] at 
> org.apache.jackrabbit.oak.query.UnionQueryImpl$2.compare(UnionQueryImpl.java:561)
>  [org.apache.jackrabbit.oak-core:1.88.0.T20251029163355-5d5086d] {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to