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