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

Emailing users at the end of a failed build very slow for big Jenkins instance using subversion

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • subversion-plugin
    • Jenkins 1.447 LTS
      Subversion 1.35
      Although both Jenkins and subversion plugin are not latest version, I have browsed github for latest versions and I believe this issue to still be present.

      At the end of a failing build, the hudson.tasks.MailSender.buildCulpritList determines who to email.
      The problem comes when hudson.scm.SubversionMailAddressResolverImpl.findMailAddressFor determines the email address of the user by finding all builds a user has committed to. This is done by iterating over every single Jenkins project (hudson.model.User.getProjects() first finds all projects and then uses AbstractProject.hasParticipant - which reads the changelog to see if the user participated).

      For a large system (we have tens of thousands of builds), this is not at all efficient.

      Unfortunately findMailAddressFor takes a user and not a project (as the obvious implementation would be to work out the email address from the commit).

      Also, the results aren't cached and so this is run for every user every time.

      I'm not sure if this can be resolved with just a fix to the subversion-plugin

          [JENKINS-15440] Emailing users at the end of a failed build very slow for big Jenkins instance using subversion

          Will Thames created issue -

          SubversionMailAddressResolverImpl.findMailAddressFor is a "last chance" strategy to retrieve user email from svn, based on commonly used (but outdated) svn hosting services that offer mail service. Based on your security settings, you should have user populated with email address from company LDAP. As a workaround, just populate users with an email in jenkins user database.

          Nicolas De Loof added a comment - SubversionMailAddressResolverImpl.findMailAddressFor is a "last chance" strategy to retrieve user email from svn, based on commonly used (but outdated) svn hosting services that offer mail service. Based on your security settings, you should have user populated with email address from company LDAP. As a workaround, just populate users with an email in jenkins user database.

          Code changed in jenkins
          User: Nicolas De Loof
          Path:
          src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java
          src/main/resources/hudson/scm/SubversionMailAddressResolverImpl/global.jelly
          http://jenkins-ci.org/commit/subversion-plugin/458fa792ef9756a97f9f04d0731a7bd005dcc840
          Log:
          JENKINS-15440 make mail address resolver rules configurable

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nicolas De Loof Path: src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java src/main/resources/hudson/scm/SubversionMailAddressResolverImpl/global.jelly http://jenkins-ci.org/commit/subversion-plugin/458fa792ef9756a97f9f04d0731a7bd005dcc840 Log: JENKINS-15440 make mail address resolver rules configurable

          Code changed in jenkins
          User: Nicolas De loof
          Path:
          src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java
          src/main/resources/hudson/scm/SubversionMailAddressResolverImpl/global.jelly
          http://jenkins-ci.org/commit/subversion-plugin/bb61a4c321313b4e396ea69dd66ef0f1a89bfa14
          Log:
          Merge pull request #21 from ndeloof/master

          JENKINS-15440

          Compare: https://github.com/jenkinsci/subversion-plugin/compare/82377581f16c...bb61a4c32131

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nicolas De loof Path: src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java src/main/resources/hudson/scm/SubversionMailAddressResolverImpl/global.jelly http://jenkins-ci.org/commit/subversion-plugin/bb61a4c321313b4e396ea69dd66ef0f1a89bfa14 Log: Merge pull request #21 from ndeloof/master JENKINS-15440 Compare: https://github.com/jenkinsci/subversion-plugin/compare/82377581f16c...bb61a4c32131
          kutzi made changes -
          Link New: This issue is duplicated by JENKINS-14966 [ JENKINS-14966 ]

          kutzi added a comment -

          Uh, these svn servers which are used by default in SubversionMailAddressResolverImpl.findMailAddressFor are very old.
          I'd suggest to remove them altogether even if that would mean a minor backword compatibility break - I cannot imagine that someone is really still relying on this feature.

          Also it would be an improvement to check first if there are any resolver rules and only if iterate over all jobs!

          kutzi added a comment - Uh, these svn servers which are used by default in SubversionMailAddressResolverImpl.findMailAddressFor are very old. I'd suggest to remove them altogether even if that would mean a minor backword compatibility break - I cannot imagine that someone is really still relying on this feature. Also it would be an improvement to check first if there are any resolver rules and only if iterate over all jobs!
          kutzi made changes -
          Assignee New: kutzi [ kutzi ]

          Code changed in jenkins
          User: Christoph Kutzinski
          Path:
          src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java
          http://jenkins-ci.org/commit/subversion-plugin/c7086b3d551e2bf4abc56fe841358b6e06258901
          Log:
          JENKINS-15440 stop as early as possible if there're no rules defined. Getting all projects of a user can be very expensive.

          Compare: https://github.com/jenkinsci/subversion-plugin/compare/9d8d24463bb9...c7086b3d551e

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Christoph Kutzinski Path: src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java http://jenkins-ci.org/commit/subversion-plugin/c7086b3d551e2bf4abc56fe841358b6e06258901 Log: JENKINS-15440 stop as early as possible if there're no rules defined. Getting all projects of a user can be very expensive. Compare: https://github.com/jenkinsci/subversion-plugin/compare/9d8d24463bb9...c7086b3d551e

          Code changed in jenkins
          User: Christoph Kutzinski
          Path:
          src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java
          src/main/resources/hudson/scm/SubversionMailAddressResolverImpl/global.jelly
          http://jenkins-ci.org/commit/subversion-plugin/ad7882e97d026827a21d206e7731bfb61e746839
          Log:
          Removed very old legacy svn repositories which where configured as defaults for mail address resolving, but are very unlikely to be of use to anyone[FIXED JENKINS-15440]

          Compare: https://github.com/jenkinsci/subversion-plugin/compare/1795b677b3fd...ad7882e97d02

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Christoph Kutzinski Path: src/main/java/hudson/scm/SubversionMailAddressResolverImpl.java src/main/resources/hudson/scm/SubversionMailAddressResolverImpl/global.jelly http://jenkins-ci.org/commit/subversion-plugin/ad7882e97d026827a21d206e7731bfb61e746839 Log: Removed very old legacy svn repositories which where configured as defaults for mail address resolving, but are very unlikely to be of use to anyone [FIXED JENKINS-15440] Compare: https://github.com/jenkinsci/subversion-plugin/compare/1795b677b3fd...ad7882e97d02
          SCM/JIRA link daemon made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]

            kutzi kutzi
            willthames Will Thames
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: