jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Cameron Hinkle (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JCR-2950) CachingEntryCollector ineffective if number of accessed policies exceeds cache size
Date Wed, 27 Mar 2013 16:29:16 GMT

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

Cameron Hinkle commented on JCR-2950:
-------------------------------------

Can anyone summarize the state of this ticket? We ran into this condition when our CQ5 servers
received a huge wall of traffic all at once and even when the traffic levels went back down
to normal, the servers never recovered.  There were  couple hundred AJP threads on each server
all waiting for the same locked object.

I'm not clear on whether a patch has been committed that eases this contention in a later
release (we're on CQ5.5, Jackrabbit 2.4) or are there steps we can take our current version
to help in this scenario?  Thanks.
                
> 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: auth-prefilled-cache.csv, cache-empty-aces.csv, cache-empty-aces.png,
cache-empty-aces-scfixed.csv, CachingEntryCollector.ConcurrentCache-trunk.patch, jcr-2950-2.csv,
jcr-2950-2.png, JCR-2950-concurrent-cache-2.patch, jcr-2950.csv, jcr-2950-csv.sh, JCR-2950_entryseparation-multisessionhack.patch,
JCR-2950_entryseparation.patch, JCR-2950-futures_2.patch, JCR-2950-futures_3.patch, JCR-2950-futures_4.patch,
JCR-2950-futures.patch, JCR-2950_performance_tests.patch.gz, jcr-2950.png, JCR-2950-refactor.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+rootnode.patch, JCR-2950-throttle2.patch, JCR-2950-throttle.patch, 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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message