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

        Activity

          People

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

            Dates

              Created:
              Updated: