You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Honwai Wong (JIRA)" <ji...@apache.org> on 2010/07/29 17:21:17 UTC

[jira] Created: (JCR-2690) Cache of o.a.j.c.security.authorization.AbstractCompiledPermissions should be configurable

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.


[jira] Resolved: (JCR-2690) Cache of o.a.j.c.security.authorization.AbstractCompiledPermissions should be configurable

Posted by "angela (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

angela resolved JCR-2690.
-------------------------

      Assignee: angela
    Resolution: Won't Fix

resolving issue. 
from my point of view the main issue in 2.0 and 2.1 is the lack of any performance optimization. That's not addressed
by exposing the internals such as cache sizes in the configuration. But as stated above, i will take a closer look at
the caches sizes 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
>            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 is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (JCR-2690) Cache of o.a.j.c.security.authorization.AbstractCompiledPermissions should be configurable

Posted by "angela (JIRA)" <ji...@apache.org>.
    [ 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.


[jira] Updated: (JCR-2690) Cache of o.a.j.c.security.authorization.AbstractCompiledPermissions should be configurable

Posted by "angela (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

angela updated JCR-2690:
------------------------

        Parent: JCR-2573
    Issue Type: Sub-task  (was: Improvement)

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