[
https://issues.apache.org/jira/browse/OAK-1734?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jukka Zitting updated OAK-1734:
-------------------------------
Attachment: 0001-OAK-1734-UserInitializer-initialize-runs-a-query-wit.patch
There's a far simpler solution, see the 0001 patch I attached.
PS. This is actually a regression from my earlier change in OAK-1719 where I
removed the extra WorkspaceInitializer arguments. The initializers run at a
very early phase in repository construction and should be as self-contained as
possible. In this case the initializer actually directly creates the index
definitions it then expects to use, so it already knows for sure which index
provider it needs and thus shouldn't have to rely on the rest of the system to
pass the correct provider as an argument.
> UserInitializer#initialize runs a query without any indexes
> -----------------------------------------------------------
>
> Key: OAK-1734
> URL: https://issues.apache.org/jira/browse/OAK-1734
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: core, security
> Affects Versions: 0.20.0
> Reporter: Alex Parvulescu
> Assignee: Alex Parvulescu
> Fix For: 1.0
>
> Attachments:
> 0001-OAK-1734-UserInitializer-initialize-runs-a-query-wit.patch,
> OAK-1734.patch
>
>
> UserInitializer#initialize runs a UUID query at repository startup but it's
> not using any defined IndexProviders, which means it will traverse the entire
> repo [0].
> The traversal warning can also be seen running the bench tests.
> {code}
> org.apache.jackrabbit.oak.spi.query.Cursors$TraversingCursor.fetchNext(Cursors.java:314)
> at
> org.apache.jackrabbit.oak.spi.query.Cursors$TraversingCursor.next(Cursors.java:291)
> at
> org.apache.jackrabbit.oak.query.ast.SelectorImpl.next(SelectorImpl.java:390)
> at
> org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.fetchNext(QueryImpl.java:627)
> at
> org.apache.jackrabbit.oak.query.QueryImpl$RowIterator.hasNext(QueryImpl.java:647)
> at
> org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:317)
> at
> org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:306)
> at
> org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:302)
> at
> org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getTree(IdentifierManager.java:132)
> at
> org.apache.jackrabbit.oak.security.user.AuthorizableBaseProvider.getByContentID(AuthorizableBaseProvider.java:56)
> at
> org.apache.jackrabbit.oak.security.user.AuthorizableBaseProvider.getByID(AuthorizableBaseProvider.java:51)
> at
> org.apache.jackrabbit.oak.security.user.UserProvider.getAuthorizable(UserProvider.java:191)
> at
> org.apache.jackrabbit.oak.security.user.UserManagerImpl.getAuthorizable(UserManagerImpl.java:103)
> at
> org.apache.jackrabbit.oak.security.user.UserInitializer.initialize(UserInitializer.java:116)
> at
> org.apache.jackrabbit.oak.spi.lifecycle.OakInitializer.initialize(OakInitializer.java:57)
> at org.apache.jackrabbit.oak.Oak.createContentRepository(Oak.java:534)
> at org.apache.jackrabbit.oak.jcr.Jcr.createRepository(Jcr.java:187)
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)