Details

    • ACT Numbers:

      Community

      Description

      When there are many aspects set on nodes in the repository (let's say, more than 10), the calls to PermissionModel$RequiredKey.getRequiredKey can be time consuming when looking for entries in the cache HashMap.

      Here is an example stack for one in the threads :

                      {
                          "fileName": "HashMap.java",
                          "lineNumber": 466,
                          "className": "java.util.HashMap",
                          "nativeMethod": false,
                          "methodName": "getEntry"
                      },
                      {
                          "fileName": "HashMap.java",
                          "lineNumber": 453,
                          "className": "java.util.HashMap",
                          "nativeMethod": false,
                          "methodName": "containsKey"
                      },
                      {
                          "fileName": "HashSet.java",
                          "lineNumber": 201,
                          "className": "java.util.HashSet",
                          "nativeMethod": false,
                          "methodName": "contains"
                      },
                      {
                          "fileName": "AbstractCollection.java",
                          "lineNumber": 316,
                          "className": "java.util.AbstractCollection",
                          "nativeMethod": false,
                          "methodName": "containsAll"
                      },
                      {
                          "fileName": "AbstractSet.java",
                          "lineNumber": 95,
                          "className": "java.util.AbstractSet",
                          "nativeMethod": false,
                          "methodName": "equals"
                      },
                      {
                          "fileName": "HashMap.java",
                          "lineNumber": 471,
                          "className": "java.util.HashMap",
                          "nativeMethod": false,
                          "methodName": "getEntry"
                      },
                      {
                          "fileName": "HashMap.java",
                          "lineNumber": 421,
                          "className": "java.util.HashMap",
                          "nativeMethod": false,
                          "methodName": "get"
                      },
                      {
                          "fileName": "PermissionModel.java",
                          "lineNumber": 1667,
                          "className": "org.alfresco.repo.security.permissions.impl.model.PermissionModel$RequiredKey",
                          "nativeMethod": false,
                          "methodName": "getRequiredKey"
                      },
                      {
                          "fileName": "PermissionModel.java",
                          "lineNumber": 1623,
                          "className": "org.alfresco.repo.security.permissions.impl.model.PermissionModel",
                          "nativeMethod": false,
                          "methodName": "generateKey"
                      },
                      {
                          "fileName": "PermissionModel.java",
                          "lineNumber": 751,
                          "className": "org.alfresco.repo.security.permissions.impl.model.PermissionModel$MutableState",
                          "nativeMethod": false,
                          "methodName": "getRequiredPermissions"
                      },
                      {
                          "fileName": "PermissionModel.java",
                          "lineNumber": 114,
                          "className": "org.alfresco.repo.security.permissions.impl.model.PermissionModel$MutableState",
                          "nativeMethod": false,
                          "methodName": "access$1400"
                      },
                      {
                          "fileName": "PermissionModel.java",
                          "lineNumber": 1863,
                          "className": "org.alfresco.repo.security.permissions.impl.model.PermissionModel",
                          "nativeMethod": false,
                          "methodName": "getRequiredPermissions"
                      },
                      {
                          "fileName": "PermissionServiceImpl.java",
                          "lineNumber": 1847,
                          "className": "org.alfresco.repo.security.permissions.impl.PermissionServiceImpl$AclTest",
                          "nativeMethod": false,
                          "methodName": "<init>"
                      },
                      {
                          "fileName": "PermissionServiceImpl.java",
                          "lineNumber": 727,
                          "className": "org.alfresco.repo.security.permissions.impl.PermissionServiceImpl",
                          "nativeMethod": false,
                          "methodName": "hasPermission"
                      },
                      {
                          "fileName": "PermissionServiceImpl.java",
                          "lineNumber": 540,
                          "className": "org.alfresco.repo.security.permissions.impl.PermissionServiceImpl",
                          "nativeMethod": false,
                          "methodName": "hasPermission"
                      }
      

      If every node have 10 to 20 aspects, the check for equality of the sets of aspects can be time consuming on each call.

        Attachments

          Structure

            Activity

              People

              • Assignee:
                closedissues Closed Issues
                Reporter:
                rivarola Philippe DE RIVAROLA
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 20 minutes
                  20m

                    Structure Helper Panel