Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.2.12, 2.4.2, 2.6
-
None
-
None
-
Repository with ACEs > 1000
Description
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))
Attachments
Attachments
1.
|
make max size of CachingEntryCollector's cache configurable | Closed | Julian Reschke | |
2.
|
augment logging information around CachingEntryCollector | Closed | Julian Reschke | |
3.
|
Reduce synchronized block scope when loading a node by id | Closed | Unassigned | |
4.
|
increase test coverage for multi-threaded ACL evaluation/modification | Open | Unassigned | |
5.
|
Minor improvements for collecting ACEs | Closed | Angela Schreiber | |
6.
|
performance tests | Closed | Unassigned | |
7.
|
Use multiple sessions to calculate permissions | Open | Unassigned | |
8.
|
separate entries used for permission eval from ACEs exposed in JCR | Closed | Angela Schreiber |