Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-2950

CachingEntryCollector ineffective if number of accessed policies exceeds cache size

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.2.12, 2.4.2, 2.6
    • Fix Version/s: None
    • Component/s: jackrabbit-core, security
    • Labels:
      None
    • Environment:
      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

        1. test2950.sh
          0.7 kB
          Julian Reschke
        2. syssessioncomparison.csv
          0.5 kB
          Julian Reschke
        3. JCR-2950-throttle2.patch
          3 kB
          Julian Reschke
        4. JCR-2950-throttle.patch
          2 kB
          Julian Reschke
        5. JCR-2950-refactor+rootnode.patch
          10 kB
          Julian Reschke
        6. JCR-2950-refactor+rootnode_7.patch
          20 kB
          Julian Reschke
        7. JCR-2950-refactor+rootnode_6.patch
          19 kB
          Angela Schreiber
        8. JCR-2950-refactor+rootnode_5.patch
          18 kB
          Julian Reschke
        9. JCR-2950-refactor+rootnode_4.patch
          18 kB
          Julian Reschke
        10. JCR-2950-refactor+rootnode_3.patch
          16 kB
          Julian Reschke
        11. JCR-2950-refactor+rootnode_2.patch
          11 kB
          Angela Schreiber
        12. JCR-2950-refactor.patch
          10 kB
          Julian Reschke
        13. JCR-2950-futures.patch
          5 kB
          Julian Reschke
        14. JCR-2950-futures_4.patch
          7 kB
          Julian Reschke
        15. JCR-2950-futures_3.patch
          7 kB
          Julian Reschke
        16. JCR-2950-futures_2.patch
          6 kB
          Angela Schreiber
        17. jcr-2950-csv.sh
          0.3 kB
          Julian Reschke
        18. JCR-2950-concurrent-cache-2.patch
          3 kB
          Julian Reschke
        19. jcr-2950-2.png
          107 kB
          Julian Reschke
        20. jcr-2950-2.csv
          2 kB
          Julian Reschke
        21. jcr-2950.png
          130 kB
          Julian Reschke
        22. jcr-2950.csv
          3 kB
          Julian Reschke
        23. JCR-2950_performance_tests.patch.gz
          435 kB
          Angela Schreiber
        24. JCR-2950_entryseparation-multisessionhack.patch
          38 kB
          Julian Reschke
        25. JCR-2950_entryseparation.patch
          45 kB
          Angela Schreiber
        26. CachingEntryCollector.ConcurrentCache-trunk.patch
          5 kB
          Alex Deparvu
        27. cache-empty-aces-scfixed.csv
          0.9 kB
          Julian Reschke
        28. cache-empty-aces.png
          76 kB
          Julian Reschke
        29. cache-empty-aces.csv
          1.0 kB
          Julian Reschke
        30. auth-prefilled-cache.csv
          0.2 kB
          Julian Reschke

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              hwong Honwai Wong
            • Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated: