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

Julian Reschke updated SLING-12384:
-----------------------------------
    Description: 
Initially I thought that the issue just applies to empty alias values, because 
the paged query will always skip them, due to the first query being "starts 
with '{{{}> ''"{}}}.

Closer inspection showed that the pageing logic was flawed:
 * read values until pageSize is exceeded *and* a new key value _x_ is reached
 * start a new query with condition {{>= x}}

This worked mostly ok with vanity paths, where the search key 
("first(sling:vanityPath)" almost always changes (having the same value for 
many resources will only lead to one working vanity path, because the same path 
cannot map to multiple resources).

For aliases the situations is different, because their value is locally scoped 
to the collection the aliased resource appears in. So we could have 10000 
resources with the _same_ set of aliases (think translations or shortcuts), and 
in cases like these, the page size (right now 2000) would be exceeded.

The proposed change is:
 * always use ">=" so the initial page contains the empty-valued properties
 * when page size is exceeded and a new key _y_ is found, do not include the 
last result, but execute a new query right away (with the proper condition so 
that all resources with key _y_ are returned)
 * also add more diagnostics, which may help to diagnose pacge size / query 
limit issues early

 

 

 

  was:...as the query starts with '{{> ''}}'.


> ResourceResolver: paged query for sling:alias will miss entries
> ---------------------------------------------------------------
>
>                 Key: SLING-12384
>                 URL: https://issues.apache.org/jira/browse/SLING-12384
>             Project: Sling
>          Issue Type: Bug
>    Affects Versions: Resource Resolver 1.11.6
>            Reporter: Julian Reschke
>            Assignee: Julian Reschke
>            Priority: Major
>
> Initially I thought that the issue just applies to empty alias values, 
> because the paged query will always skip them, due to the first query being 
> "starts with '{{{}> ''"{}}}.
> Closer inspection showed that the pageing logic was flawed:
>  * read values until pageSize is exceeded *and* a new key value _x_ is reached
>  * start a new query with condition {{>= x}}
> This worked mostly ok with vanity paths, where the search key 
> ("first(sling:vanityPath)" almost always changes (having the same value for 
> many resources will only lead to one working vanity path, because the same 
> path cannot map to multiple resources).
> For aliases the situations is different, because their value is locally 
> scoped to the collection the aliased resource appears in. So we could have 
> 10000 resources with the _same_ set of aliases (think translations or 
> shortcuts), and in cases like these, the page size (right now 2000) would be 
> exceeded.
> The proposed change is:
>  * always use ">=" so the initial page contains the empty-valued properties
>  * when page size is exceeded and a new key _y_ is found, do not include the 
> last result, but execute a new query right away (with the proper condition so 
> that all resources with key _y_ are returned)
>  * also add more diagnostics, which may help to diagnose pacge size / query 
> limit issues early
>  
>  
>  



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

Reply via email to