Alexander Klimetschek created OAK-4920: ------------------------------------------
Summary: Performance: DefaultSyncHandler.listIdentities() search too broad, triggers traversal warning Key: OAK-4920 URL: https://issues.apache.org/jira/browse/OAK-4920 Project: Jackrabbit Oak Issue Type: Improvement Components: auth-external Affects Versions: 1.5.11, 1.4.8 Reporter: Alexander Klimetschek DefaultSyncHandler.listIdentities() collects users by [searching for all nodes under /home|https://github.com/apache/jackrabbit-oak/blob/b3e62e3467bf6433b5a419c2f371331f33e57820/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java#L143] – the xpath query executed is {{/jcr:root/home//element(\*)\[@jcr:primaryType]}}. With a few hundred users this easily gives an oak index traversal warning: {noformat} org.apache.jackrabbit.oak.spi.query.Cursors$TraversingCursor Traversed 1000 nodes with filter Filter(query=select [jcr:path], [jcr:score], * from [nt:base] as a where [jcr:primaryType] is not null and isdescendantnode(a, '/home') /* xpath: /jcr:root/home//element(*)[@jcr:primaryType] */, path=/home//*, property=[jcr:primaryType=[is not null]]); consider creating an index or changing the query {noformat} However, [later it reduces|https://github.com/apache/jackrabbit-oak/blob/b3e62e3467bf6433b5a419c2f371331f33e57820/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java#L151] the result to authorizables which have a {{rep:externalId}}. Since OAK-4301 there is an oak index for {{rep:externalId}}, so the query can be optimized by searching for anything with {{rep:externalId}} instead: {code:java} userManager.findAuthorizables("rep:externalId", null); {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)