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: Improvement
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.