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 "Marcel Reutegger (JIRA)" <ji...@apache.org> on 2012/10/25 14:41:21 UTC
[jira] [Created] (OAK-399) LoginModuleImpl does not use
QueryIndexProviders
Marcel Reutegger created OAK-399:
------------------------------------
Summary: LoginModuleImpl does not use QueryIndexProviders
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
[jira] [Commented] (OAK-399) LoginModuleImpl does not use
QueryIndexProviders
Posted by "angela (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/OAK-399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13484328#comment-13484328 ]
angela commented on OAK-399:
----------------------------
the RootImpl is created the RepositoryCallback not in the loginmodule... and you might
have noticed that there is already a TODO mentioning exactly this problem both in the
callback and in the RootImpl.
the problem is that the RootImpl constructor sets the queryIndex to
an empty CompositeQueryIndexProvider instead of the onces configured in the setup.
> LoginModuleImpl does not use QueryIndexProviders
> ------------------------------------------------
>
> 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
[jira] [Updated] (OAK-399) RootImpl(NodeStore store) does not use
configured index providers
Posted by "angela (JIRA)" <ji...@apache.org>.
[ 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