[
https://issues.apache.org/jira/browse/JCR-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15899954#comment-15899954
]
Julian Reschke commented on JCR-2690:
-------------------------------------
*version*!
> 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
> Reporter: Honwai Wong
> Assignee: angela
> 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 was sent by Atlassian JIRA
(v6.3.15#6346)