Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-3999

User Administration painfully slow

XMLWordPrintable

    • We collect Jira feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

      The time to add a user to a group depends heaviliy on the number of issues in the system. This is scary, the operation is already painfully slow and will only get slower and slower over time.

      Intuitively one would expect that adding a group to a user is a constant time operation (basically add one line in a link table).

      Here is a profile for adding a group to a user. It seems that a complete reindexing is performed, and that it is even done multiple times.

      [60375ms] - /jira/secure/admin/user/EditUserGroups.jspa
      [60297ms] - EditUserGroups.execute()
      [360ms] - Lucene Query
      [63ms] - Permission Query
      [32ms] - PermissionManager.getProjects()
      [16ms] - SchemeManager.hasSchemeAuthority()
      [16ms] - SchemeManager.getSchemes()
      [15ms] - SchemeManager.getSchemes()
      [78ms] - Retrieve From cache/db and filter
      [16ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [16ms] - CacheManager.getValue()
      [16ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [15ms] - IssueManager.getIssue()
      [15ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [16ms] - CacheManager.getValue()
      [31ms] - Sorting
      [15ms] - Comparator.compare()
      [19313ms] - IssueIndexManager.reIndexIssues()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - CacheManager.getEntitiesByGenericValue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - CacheManager.getEntitiesByGenericValue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - CacheManager.getEntitiesByGenericValue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [562ms] - Lucene Query
      [31ms] - Permission Query
      [15ms] - PermissionManager.getProjects()
      [15ms] - SchemeManager.hasSchemeAuthority()
      [15ms] - SchemeManager.getSchemes()
      [109ms] - Retrieve From cache/db and filter
      [15ms] - IssueManager.getIssue()
      [15ms] - IssueManager.getIssue()
      [15ms] - CacheManager.getValue()
      [16ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [16ms] - IssueManager.getIssue()
      [16ms] - CacheManager.getValue()
      [32ms] - Sorting
      [16ms] - Comparator.compare()
      [16ms] - Comparator.compare()
      [39562ms] - IssueIndexManager.reIndexIssues()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - CacheManager.getEntitiesByGenericValue()
      [15ms] - List.size()
      [15ms] - List.size()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - CacheManager.getEntitiesByGenericValue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - CacheManager.getEntitiesByGenericValue()
      [16ms] - List.size()
      [16ms] - List.size()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - CacheManager.getEntitiesByGenericValue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - IssueManager.getEntitiesByIssue()
      [15ms] - List.size()
      [15ms] - List.size()
      [15ms] - List.size()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - IssueManager.getEntitiesByIssue()
      [16ms] - List.get()
      [16ms] - List.get()
      [16ms] - List.get()

      I don't see why it's necessary to reindex the issues at all, and it certainly should not be done several times.

      This bug really gets in the way when we set up a new project with it's own developer group and then try to add developers to that group.

            Unassigned Unassigned
            2445c6318d9c Lars Kühne
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: