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

asynchPeople very slow when using Gravatar & Subversion plugins

      https://gist.github.com/4534378 shows https://jenkins.ci.cloudbees.com/job/libraries/asynchPeople/ taking an inordinate amount of time in the callback. Clearly AsynchPeople.data() cannot assume that UserAvatarResolver.resolve is quick. UserGravatarResolver sometimes blocks on an HTTP connection to a web service, though this is cached. However every time it checks Mailer.UserProperty.getAddress, which in the presence of SubversionMailAddressResolverImpl examines every build of every project in every folder in all of Jenkins. This is so inefficient we probably never want to do it, much less synchronously in an HTTP request.

      Besides People, the avatar is used in a couple of per-User pages, which is perhaps OK; but shown for every User in the HudsonPrivateSecurityRealm overview, which is definitely not OK.

          [JENKINS-16342] asynchPeople very slow when using Gravatar & Subversion plugins

          Jesse Glick created issue -

          Jesse Glick added a comment -

          Unreleased fixes of JENKINS-15440 at least avoid the problem when you have no configured rules. But if you have even one, the problem will suddenly pop up again.

          Jesse Glick added a comment - Unreleased fixes of JENKINS-15440 at least avoid the problem when you have no configured rules. But if you have even one, the problem will suddenly pop up again.
          Jesse Glick made changes -
          Link New: This issue depends on JENKINS-15440 [ JENKINS-15440 ]

          Code changed in jenkins
          User: Jesse Glick
          Path:
          changelog.html
          core/src/main/java/hudson/model/View.java
          http://jenkins-ci.org/commit/jenkins/c757e65431ad1aec9a3bebe81ac919577e51ac58
          Log:
          JENKINS-16342 Improving responsiveness of asynchPeople when Gravatar plugin is in use.
          This change does not necessarily improve total performance, since the avatar is still computed.
          But (1) the computation is correctly done in the work thread, not in the HTTP response thread;
          (2) the computation is done just once for a given User, which could reduce load when many AJAX checks are done.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html core/src/main/java/hudson/model/View.java http://jenkins-ci.org/commit/jenkins/c757e65431ad1aec9a3bebe81ac919577e51ac58 Log: JENKINS-16342 Improving responsiveness of asynchPeople when Gravatar plugin is in use. This change does not necessarily improve total performance, since the avatar is still computed. But (1) the computation is correctly done in the work thread, not in the HTTP response thread; (2) the computation is done just once for a given User, which could reduce load when many AJAX checks are done.
          Jesse Glick made changes -
          Link New: This issue is blocking JENKINS-15206 [ JENKINS-15206 ]

          Jesse Glick added a comment -

          Some things remain to be done to make UserAvatarResolver consistently quick:

          • SubversionMailAddressResolverImpl should probably be rewritten to perform its calculations in a long-running process and cache them. Or maybe this should just be deleted and the problem solved in a different way.
          • UserGravatarResolver should be rewritten to never block the API call waiting on an HTTP response; should initiate these asynchronously.

          And until then, or even afterwards in case other plugins will reintroduce similar bugs:

          • May be better for asynchPeople to list all users in a first pass, then go back and resolve avatars in a second pass.
          • HudsonPrivateSecurityRealm/index.jelly and similar pages should avoid asking for the avatar synchronously in the HTTP handling thread. Can use ProgressiveRendering or perform the avatar calculation in the URL handler for the <img> rather than when producing the page.

          Jesse Glick added a comment - Some things remain to be done to make UserAvatarResolver consistently quick: SubversionMailAddressResolverImpl should probably be rewritten to perform its calculations in a long-running process and cache them. Or maybe this should just be deleted and the problem solved in a different way. UserGravatarResolver should be rewritten to never block the API call waiting on an HTTP response; should initiate these asynchronously. And until then, or even afterwards in case other plugins will reintroduce similar bugs: May be better for asynchPeople to list all users in a first pass, then go back and resolve avatars in a second pass. HudsonPrivateSecurityRealm/index.jelly and similar pages should avoid asking for the avatar synchronously in the HTTP handling thread. Can use ProgressiveRendering or perform the avatar calculation in the URL handler for the <img> rather than when producing the page.

          dogfood added a comment -

          Integrated in jenkins_main_trunk #2191
          JENKINS-16342 Improving responsiveness of asynchPeople when Gravatar plugin is in use. (Revision c757e65431ad1aec9a3bebe81ac919577e51ac58)

          Result = SUCCESS
          Jesse Glick : c757e65431ad1aec9a3bebe81ac919577e51ac58
          Files :

          • core/src/main/java/hudson/model/View.java
          • changelog.html

          dogfood added a comment - Integrated in jenkins_main_trunk #2191 JENKINS-16342 Improving responsiveness of asynchPeople when Gravatar plugin is in use. (Revision c757e65431ad1aec9a3bebe81ac919577e51ac58) Result = SUCCESS Jesse Glick : c757e65431ad1aec9a3bebe81ac919577e51ac58 Files : core/src/main/java/hudson/model/View.java changelog.html

          Jesse Glick added a comment -

          Serious enough to potentially merit backport to 1.480.x.

          Jesse Glick added a comment - Serious enough to potentially merit backport to 1.480.x.
          Jesse Glick made changes -
          Priority Original: Major [ 3 ] New: Critical [ 2 ]

          Jesse Glick added a comment -

          Gravatar plugin could probably take advantage of new resolveFast.

          Jesse Glick added a comment - Gravatar plugin could probably take advantage of new resolveFast .
          Jesse Glick made changes -
          Link New: This issue depends on JENKINS-16390 [ JENKINS-16390 ]

            jglick Jesse Glick
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: