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

Displaying /people can consume huge resources

    XMLWordPrintable

Details

    Description

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

      Attachments

        Issue Links

          Activity

            People

              jglick Jesse Glick
              jglick Jesse Glick
              Votes:
              1 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: