Displaying /people can consume huge resources

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      https://groups.google.com/d/msg/jenkinsci-dev/uAxP7zMc1bc/UGdgzJveqWoJ discusses a performance problem with the essential issue

      […I/O, XML…]
      at hudson.model.User.save(User.java:428)
      at hudson.model.User.addProperty(User.java:222)
      at hudson.plugins.git.GitChangeSet.getAuthor(GitChangeSet.java:251)
      at hudson.model.View$People.getUserInfo(View.java:625)
      at hudson.model.View$People.<init>(View.java:602)
      at jenkins.model.Jenkins.getPeople(Jenkins.java:907)
      […HTTP servicing…]
      

      This was suggested to be a problem in the Git plugin, but recently a similar problem has arisen servicing /view/Main/people/ (loading e.g. http://ci.jenkins-ci.org/people/ can be used as a live example):

      […XML, probably I/O…]
      at hudson.plugins.perforce.PerforceChangeLogSet.parse(PerforceChangeLogSet.java:113) 
      at hudson.plugins.perforce.PerforceChangeLogParser.parse(PerforceChangeLogParser.java:18) 
      at hudson.model.AbstractBuild.calcChangeSet(AbstractBuild.java:820) 
      at hudson.model.AbstractBuild.getChangeSet(AbstractBuild.java:794) 
      at hudson.model.View$People.getUserInfo(View.java:629) 
      at hudson.model.View$People.<init>(View.java:619) 
      at hudson.model.View.getPeople(View.java:594) 
      […Stapler/Jelly processing…]
      

      The common issue is that People.getUserInfo is traversing every build of every job in the system, which on its own can be a heavyweight operation in a large installation, and then triggering changelog.xml parses for each such job (the result is held weakly so will often be missing).

      While it can certainly be useful to display build-derived information about people in the system, this should be considered optional information, and must be provided asynchronously if at all so that page load does not block on it and it can be easily canceled (e.g. by moving to another page).

            Assignee:
            Jesse Glick
            Reporter:
            Jesse Glick
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Resolved:
              Archived: