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

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.2.12, 2.4.2, 2.6
    • None
    • jackrabbit-core, security
    • 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

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

        Activity

          People

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

            Dates

              Created:
              Updated: