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

User Administration painfully slow

    XMLWordPrintable

Details

    • 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.

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: