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 "angela (JIRA)" <ji...@apache.org> on 2012/10/25 20:17:13 UTC

[jira] [Updated] (OAK-399) RootImpl(NodeStore store) does not use configured index providers

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

angela updated OAK-399:
-----------------------

    Summary: RootImpl(NodeStore store) does not use configured index providers  (was: LoginModuleImpl does not use QueryIndexProviders)

i currently see the following options to fix that:

- drop RootImpl constructor that only gets the NodeStore
  -> RepositoryCallback needs to get a new contentsession or root passed an
     cannot create the root itself (see corresponding TODO there). as discussed
     with marcel, we initially thought that the login should rather just 
     create the root on demand instead of having a new contentsession or root
     being created for each login even if it's not used.

- leave the constructor but make sure the root knows about the
  configured index providers
                
> RootImpl(NodeStore store) does not use configured index providers
> -----------------------------------------------------------------
>
>                 Key: OAK-399
>                 URL: https://issues.apache.org/jira/browse/OAK-399
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 0.5
>            Reporter: Marcel Reutegger
>
> The LoginModuleImpl (actually in the base class AbstractLoginModule.getRoot()) creates a RootImpl without any QueryIndexProviders. This results in very poor query performance when the userId is resolved in the IdentifierManager:
>         at org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.getProperty(MemoryNodeBuilder.java:331)
>         at org.apache.jackrabbit.oak.core.TreeImpl.internalGetProperty(TreeImpl.java:527)
>         at org.apache.jackrabbit.oak.core.TreeImpl.getProperty(TreeImpl.java:143)
>         at org.apache.jackrabbit.oak.query.ast.SelectorImpl.currentProperty(SelectorImpl.java:249)
>         at org.apache.jackrabbit.oak.query.ast.PropertyValueImpl.currentProperty(PropertyValueImpl.java:98)
>         at org.apache.jackrabbit.oak.query.ast.ComparisonImpl.evaluate(ComparisonImpl.java:64)
>         at org.apache.jackrabbit.oak.query.ast.SelectorImpl.next(SelectorImpl.java:146)
>         at org.apache.jackrabbit.oak.query.Query$RowIterator.fetchNext(Query.java:447)
>         at org.apache.jackrabbit.oak.query.Query$RowIterator.hasNext(Query.java:471)
>         at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:294)
>         at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:283)
>         at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getTree(IdentifierManager.java:117)
>         at org.apache.jackrabbit.oak.security.user.AuthorizableBaseProvider.getByID(AuthorizableBaseProvider.java:43)
>         at org.apache.jackrabbit.oak.security.user.UserProvider.getAuthorizable(UserProvider.java:176)
>         at org.apache.jackrabbit.oak.security.user.UserManagerImpl.getAuthorizable(UserManagerImpl.java:93)
>         at org.apache.jackrabbit.oak.security.authentication.user.UserAuthentication.authenticate(UserAuthentication.java:82)
>         at org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl.login(LoginModuleImpl.java:120)
> The query engine basically has to traverse the whole repository to find the node with the given jcr:uuid.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira