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

Job Config History plugin should not call User.current() during startup

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • None
    • 2.138.2

      2.138.2 backported JEP-214/Uplink telemetry, and with it, an extension that calls save from its constructor.

      When Job Config History is installed, that results in the following warning being logged on the first startup during the save call:

      https://gist.github.com/daniel-beck/140e11878479d5c2eef882f54c4ed33d

      It's not obviously a bad idea to call save there (IMO), but there probably should be a check in JCH to not do elaborate processing during startup. Unsure.

          [JENKINS-53998] Job Config History plugin should not call User.current() during startup

          Daniel Beck added a comment -

          I've recently observed the same problem with a number of plugins. It's always the same basic structure, during startup, a plugin saves a Saveable, and JCH calls PluginUtils.isUserExcluded (when Jenkins.getAuthentication might be good enough, unsure), resulting in a deadlock, or at least failure to initialize extensions.

          Daniel Beck added a comment - I've recently observed the same problem with a number of plugins. It's always the same basic structure, during startup, a plugin saves a Saveable, and JCH calls PluginUtils.isUserExcluded (when Jenkins.getAuthentication might be good enough, unsure), resulting in a deadlock, or at least failure to initialize extensions.

          Daniel Beck added a comment -

          Example stack trace excerpt:

          	at hudson.plugins.jobConfigHistory.PluginUtils.isUserExcluded(PluginUtils.java:121)
          	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:55)
          	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:81)
          	at hudson.model.Descriptor.save(Descriptor.java:874)
          	at hudson.plugins.openid.OpenIdLoginService$GlobalConfigurationImpl.setEnabled(OpenIdLoginService.java:234)
          	at hudson.plugins.openid.OpenIdLoginService$GlobalConfigurationImpl.<init>(OpenIdLoginService.java:217) 

          Daniel Beck added a comment - Example stack trace excerpt: at hudson.plugins.jobConfigHistory.PluginUtils.isUserExcluded(PluginUtils.java:121) at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:55) at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:81) at hudson.model.Descriptor.save(Descriptor.java:874) at hudson.plugins.openid.OpenIdLoginService$GlobalConfigurationImpl.setEnabled(OpenIdLoginService.java:234) at hudson.plugins.openid.OpenIdLoginService$GlobalConfigurationImpl.<init>(OpenIdLoginService.java:217)

            stefanbrausch Stefan Brausch
            danielbeck Daniel Beck
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: