You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Arturo Alfaro (JIRA)" <ji...@apache.org> on 2014/07/15 02:26:06 UTC

[jira] [Commented] (JCR-2950) CachingEntryCollector ineffective if number of accessed policies exceeds cache size

    [ https://issues.apache.org/jira/browse/JCR-2950?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14061470#comment-14061470 ] 

Arturo Alfaro commented on JCR-2950:
------------------------------------

We're running into a similar error in AEM 5.6.1 - CRX 2.4.42 Is there any chance of being the same issue ?

"172.17.11.30 [1405348503709] GET /content/clientname_com/desktop/north_america/en_us/support/index.html HTTP/1.1" - Thread t@366
   java.lang.Thread.State: BLOCKED
	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
	- waiting to lock <16742fd2> (a org.apache.jackrabbit.core.ItemManager) owned by "172.17.11.30 [1405348326287] GET /content/clientname_com/mobile/latam/es_ve/suppor/index.html HTTP/1.1" t@324
	at org.apache.jackrabbit.core.security.authorization.acl.EntryCollector.getNodeById(EntryCollector.java:217)
	at org.apache.jackrabbit.core.security.authorization.acl.CachingEntryCollector.getEntries(CachingEntryCollector.java:110)
	at org.apache.jackrabbit.core.security.authorization.acl.EntryCollector.collectEntries(EntryCollector.java:147)
	at org.apache.jackrabbit.core.security.authorization.acl.CompiledPermissionsImpl.canRead(CompiledPermissionsImpl.java:263)
	- locked <5adb15a2> (a java.lang.Object)
	at org.apache.jackrabbit.core.security.DefaultAccessManager.canRead(DefaultAccessManager.java:265)
	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:438)
	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:848)
	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
	- locked <6c858454> (a org.apache.jackrabbit.core.ItemManager)
	at org.apache.jackrabbit.core.LazyItemIterator.prefetchNext(LazyItemIterator.java:122)
	at org.apache.jackrabbit.core.LazyItemIterator.next(LazyItemIterator.java:257)
	at org.apache.jackrabbit.core.LazyItemIterator.nextProperty(LazyItemIterator.java:174)
	at org.apache.sling.jcr.resource.JcrPropertyMap.readFully(JcrPropertyMap.java:404)
	at org.apache.sling.jcr.resource.JcrPropertyMap.entrySet(JcrPropertyMap.java:202)

> CachingEntryCollector ineffective if number of accessed policies exceeds cache size
> -----------------------------------------------------------------------------------
>
>                 Key: JCR-2950
>                 URL: https://issues.apache.org/jira/browse/JCR-2950
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-core, security
>    Affects Versions: 2.2.12, 2.4.2, 2.6
>         Environment: Repository with ACEs > 1000
>            Reporter: Honwai Wong
>            Assignee: Julian Reschke
>         Attachments: CachingEntryCollector.ConcurrentCache-trunk.patch, JCR-2950-concurrent-cache-2.patch, JCR-2950-futures.patch, JCR-2950-futures_2.patch, JCR-2950-futures_3.patch, JCR-2950-futures_4.patch, JCR-2950-refactor+rootnode.patch, JCR-2950-refactor+rootnode_2.patch , JCR-2950-refactor+rootnode_3.patch, JCR-2950-refactor+rootnode_4.patch, JCR-2950-refactor+rootnode_5.patch, JCR-2950-refactor+rootnode_6.patch, JCR-2950-refactor+rootnode_7.patch, JCR-2950-refactor.patch, JCR-2950-throttle.patch, JCR-2950-throttle2.patch, JCR-2950_entryseparation-multisessionhack.patch, JCR-2950_entryseparation.patch, JCR-2950_performance_tests.patch.gz, auth-prefilled-cache.csv, cache-empty-aces-scfixed.csv, cache-empty-aces.csv, cache-empty-aces.png, jcr-2950-2.csv, jcr-2950-2.png, jcr-2950-csv.sh, jcr-2950.csv, jcr-2950.png, syssessioncomparison.csv, test2950.sh
>
>
> The CachingEntryCollector's cache (LRUMap, max size: 1000) seems to become ineffective in case there are more than 1000 ACEs present in the repository. Since access to the cache is synchronized, many threads are basically blocked, waiting to get access to the cache.
> Java callstack:
> at org/apache/jackrabbit/core/security/authorization/acl/CachingEntryCollector.getEntries(CachingEntryCollector.java:99(Compiled Code))
> at org/apache/jackrabbit/core/security/authorization/acl/EntryCollector.collectEntries(EntryCollector.java:134(Compiled Code))
> at org/apache/jackrabbit/core/security/authorization/acl/CompiledPermissionsImpl.canRead(CompiledPermissionsImpl.java:250(Compiled Code))
> at org/apache/jackrabbit/core/security/DefaultAccessManager.canRead(DefaultAccessManager.java:251(Compiled Code))
> at org/apache/jackrabbit/core/ItemManager.canRead(ItemManager.java:426(Compiled Code))
> at org/apache/jackrabbit/core/ItemManager.createItemData(ItemManager.java(Compiled Code))
> at org/apache/jackrabbit/core/ItemManager.getItemData(ItemManager.java:379(Compiled Code))
> at org/apache/jackrabbit/core/ItemManager.itemExists(ItemManager.java:292(Compiled Code))
> at org/apache/jackrabbit/core/ItemManager.itemExists(ItemManager.java:464(Compiled Code))
> at org/apache/jackrabbit/core/session/SessionItemOperation$1.perform(SessionItemOperation.java:49(Compiled Code))
> at org/apache/jackrabbit/core/session/SessionItemOperation$1.perform(SessionItemOperation.java:46(Compiled Code))
> at org/apache/jackrabbit/core/session/SessionItemOperation.perform(SessionItemOperation.java:187(Compiled Code))
> at org/apache/jackrabbit/core/session/SessionState.perform(SessionState.java:200(Compiled Code))
> at org/apache/jackrabbit/core/SessionImpl.perform(SessionImpl.java:355(Compiled Code))
> at org/apache/jackrabbit/core/SessionImpl.itemExists(SessionImpl.java:751(Compiled Code))



--
This message was sent by Atlassian JIRA
(v6.2#6252)