Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-15206

Displaying /people can consume huge resources


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

            jglick Jesse Glick
            jglick Jesse Glick
            1 Vote for this issue
            7 Start watching this issue