[
https://issues.apache.org/jira/browse/JCR-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12893950#action_12893950
]
angela commented on JCR-2690:
-----------------------------
i already committed an initial bunch of changes for JCR-2573 which among other
things changes the way ItemManager.canRead is handled
by the access manager / compiled permissions. nevertheless, i will take a look
at this issue (precisely: the cache sizes in general) in a second
iteration.
> Cache of o.a.j.c.security.authorization.AbstractCompiledPermissions should be
> configurable
> ------------------------------------------------------------------------------------------
>
> Key: JCR-2690
> URL: https://issues.apache.org/jira/browse/JCR-2690
> Project: Jackrabbit Content Repository
> Issue Type: Sub-task
> Components: security
> Affects Versions: 2.1.0
> Reporter: Honwai Wong
> Priority: Minor
>
> It seems that the LRUMap used to cache permission-results may be too small
> for large repositories. It is currently hardcoded to 1000. Thread dump show
> that threads are blocked while reading ACL information from the repository
> instead of returning them from the cache:
> java.lang.Thread.State: BLOCKED (on object monitor)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:167)
> - waiting to lock <0x00002aaae4045558> (a
> org.apache.jackrabbit.core.state.LocalItemStateManager)
> at
> org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:200)
> at
> org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState(HierarchyManagerImpl.java:152)
> at
> org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath(HierarchyManagerImpl.java:115)
> at
> org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath(CachingHierarchyManager.java:151)
> at
> org.apache.jackrabbit.core.HierarchyManagerImpl.resolveNodePath(HierarchyManagerImpl.java:372)
> at
> org.apache.jackrabbit.core.ItemManager.nodeExists(ItemManager.java:484)
> at
> org.apache.jackrabbit.core.SessionImpl.nodeExists(SessionImpl.java:1446)
> at
> org.apache.jackrabbit.core.security.authorization.acl.ACLProvider$AclPermissions.buildResult(ACLProvider.java:379)
> at
> org.apache.jackrabbit.core.security.authorization.AbstractCompiledPermissions.getResult(AbstractCompiledPermissions.java:50)
> - locked <0x00002aadb4503618> (a
> org.apache.commons.collections.map.LRUMap)
> at
> org.apache.jackrabbit.core.security.authorization.AbstractCompiledPermissions.grants(AbstractCompiledPermissions.java:86)
> at
> org.apache.jackrabbit.core.security.DefaultAccessManager.isGranted(DefaultAccessManager.java:246)
> at
> org.apache.jackrabbit.core.security.DefaultAccessManager.isGranted(DefaultAccessManager.java:234)
> at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:447)
> The size of the LRUMap used by
> o.a.j.c.security.authorization.AbstractCompiledPermissions should ideally be
> configurable to allow for adjusting this cache to improve permission lookup.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.