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 2026/04/13 06:34:00 UTC

[jira] [Resolved] (OAK-12051) Sorting Unions by Score: NullPointerException

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