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

            jglick Jesse Glick added a comment - https://github.com/jenkinsci/jenkins/pull/570

            Code changed in jenkins
            User: Jesse Glick
            Path:
            changelog.html
            http://jenkins-ci.org/commit/jenkins/a0d351685c50b97e658ded58c70da931ddf225d3
            Log:
            [FIXED JENKINS-15206] Displaying <code>/people</code> can consume huge resources.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html http://jenkins-ci.org/commit/jenkins/a0d351685c50b97e658ded58c70da931ddf225d3 Log: [FIXED JENKINS-15206] Displaying <code>/people</code> can consume huge resources.
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #1943
            [FIXED JENKINS-15206] Displaying <code>/people</code> can consume huge resources. (Revision a0d351685c50b97e658ded58c70da931ddf225d3)

            Result = UNSTABLE
            Jesse Glick : a0d351685c50b97e658ded58c70da931ddf225d3
            Files :

            • changelog.html
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #1943 [FIXED JENKINS-15206] Displaying <code>/people</code> can consume huge resources. (Revision a0d351685c50b97e658ded58c70da931ddf225d3) Result = UNSTABLE Jesse Glick : a0d351685c50b97e658ded58c70da931ddf225d3 Files : changelog.html
            newenigma newenigma added a comment -

            Just noticed that after this fix, when you are on the user profile page of a user, the link in the left navigation for People goes to /people, which now gives a 404.

            newenigma newenigma added a comment - Just noticed that after this fix, when you are on the user profile page of a user, the link in the left navigation for People goes to /people, which now gives a 404.

            Code changed in jenkins
            User: Jesse Glick
            Path:
            changelog.html
            core/src/main/resources/hudson/model/User/sidepanel.jelly
            core/src/main/resources/hudson/model/View/People/index.jelly
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_da.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_de.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_es.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_fr.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ja.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ko.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_nb_NO.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_pt_BR.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ru.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_tr.properties
            war/src/main/webapp/help/security/private-realm.html
            war/src/main/webapp/help/security/private-realm_de.html
            war/src/main/webapp/help/security/private-realm_fr.html
            war/src/main/webapp/help/security/private-realm_ja.html
            war/src/main/webapp/help/security/private-realm_pt_BR.html
            war/src/main/webapp/help/security/private-realm_ru.html
            war/src/main/webapp/help/security/private-realm_tr.html
            war/src/main/webapp/help/security/private-realm_zh_CN.html
            http://jenkins-ci.org/commit/jenkins/06514d2517bb124cd3700d8063c755e60a7107fe
            Log:
            JENKINS-15206 Fixed up some remaining references to /people and introduced a redirect page.
            Thanks to newenigma for catching.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html core/src/main/resources/hudson/model/User/sidepanel.jelly core/src/main/resources/hudson/model/View/People/index.jelly core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_da.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_de.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_es.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_fr.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ja.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ko.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_nb_NO.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_pt_BR.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ru.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_tr.properties war/src/main/webapp/help/security/private-realm.html war/src/main/webapp/help/security/private-realm_de.html war/src/main/webapp/help/security/private-realm_fr.html war/src/main/webapp/help/security/private-realm_ja.html war/src/main/webapp/help/security/private-realm_pt_BR.html war/src/main/webapp/help/security/private-realm_ru.html war/src/main/webapp/help/security/private-realm_tr.html war/src/main/webapp/help/security/private-realm_zh_CN.html http://jenkins-ci.org/commit/jenkins/06514d2517bb124cd3700d8063c755e60a7107fe Log: JENKINS-15206 Fixed up some remaining references to /people and introduced a redirect page. Thanks to newenigma for catching.
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #1982

            Result = SUCCESS

            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #1982 Result = SUCCESS

            Code changed in jenkins
            User: Jesse Glick
            Path:
            core/src/main/resources/hudson/model/User/sidepanel.jelly
            core/src/main/resources/hudson/model/View/People/index.jelly
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_da.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_de.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_es.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_fr.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ja.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ko.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_nb_NO.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_pt_BR.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ru.properties
            core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_tr.properties
            war/src/main/webapp/help/security/private-realm.html
            war/src/main/webapp/help/security/private-realm_de.html
            war/src/main/webapp/help/security/private-realm_fr.html
            war/src/main/webapp/help/security/private-realm_ja.html
            war/src/main/webapp/help/security/private-realm_pt_BR.html
            war/src/main/webapp/help/security/private-realm_ru.html
            war/src/main/webapp/help/security/private-realm_tr.html
            war/src/main/webapp/help/security/private-realm_zh_CN.html
            http://jenkins-ci.org/commit/jenkins/ad0050b9294450dadca8ba13f47b34d25b477cd5
            Log:
            JENKINS-15206 Fixed up some remaining references to /people and introduced a redirect page.
            Thanks to newenigma for catching.(cherry picked from commit 06514d2517bb124cd3700d8063c755e60a7107fe)

            Conflicts:
            changelog.html

            Compare: https://github.com/jenkinsci/jenkins/compare/a7d530c57893...ad0050b92944

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: core/src/main/resources/hudson/model/User/sidepanel.jelly core/src/main/resources/hudson/model/View/People/index.jelly core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_da.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_de.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_es.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_fr.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ja.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ko.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_nb_NO.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_pt_BR.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_ru.properties core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/index_tr.properties war/src/main/webapp/help/security/private-realm.html war/src/main/webapp/help/security/private-realm_de.html war/src/main/webapp/help/security/private-realm_fr.html war/src/main/webapp/help/security/private-realm_ja.html war/src/main/webapp/help/security/private-realm_pt_BR.html war/src/main/webapp/help/security/private-realm_ru.html war/src/main/webapp/help/security/private-realm_tr.html war/src/main/webapp/help/security/private-realm_zh_CN.html http://jenkins-ci.org/commit/jenkins/ad0050b9294450dadca8ba13f47b34d25b477cd5 Log: JENKINS-15206 Fixed up some remaining references to /people and introduced a redirect page. Thanks to newenigma for catching.(cherry picked from commit 06514d2517bb124cd3700d8063c755e60a7107fe) Conflicts: changelog.html Compare: https://github.com/jenkinsci/jenkins/compare/a7d530c57893...ad0050b92944

            People

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

              Dates

                Created:
                Updated:
                Resolved: