During a functional test in which the jobConfigHistory (2.5) was loaded, I observed a deadlock:

      "Trigger.init":
        waiting to lock monitor 0x6ed0f06c (object 0xa2a5c080, a hudson.DescriptorExtensionList),
        which is held by "UpdateCenter.init"
      "UpdateCenter.init":
        waiting to lock monitor 0x69e32098 (object 0xb2602558, a hudson.ExtensionList$Lock),
        which is held by "Trigger.init"
      "Trigger.init":
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:246)
      	- waiting to lock <0xa2a5c080> (a hudson.DescriptorExtensionList)
      	at hudson.ExtensionList.iterator(ExtensionList.java:138)
      	at hudson.model.User.load(User.java:150)
      	- locked <0xa2b26450> (a hudson.model.User)
      	at hudson.model.User.<init>(User.java:121)
      	at hudson.model.User.getOrCreate(User.java:342)
      	at hudson.model.User.get(User.java:331)
      	at hudson.model.User.get(User.java:299)
      	at hudson.model.User.get(User.java:354)
      	at hudson.model.User.current(User.java:366)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:78)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:62)
      	at hudson.plugins.jobConfigHistory.JobConfigHistoryPurger.<init>(JobConfigHistoryPurger.java:48)
      	at hudson.plugins.jobConfigHistory.JobConfigHistoryPurger$$FastClassByGuice$$737d44b4.newInstance(<generated>)
      	at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
      	at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
      	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108)
      	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:87)
      	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:259)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
      	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1018)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      	at com.google.inject.Scopes$1$1.get(Scopes.java:59)
      	- locked <0xb26c2c38> (a com.google.inject.Scopes$1$1)
      	at hudson.ExtensionFinder$GuiceFinder$4$1.get(ExtensionFinder.java:422)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
      	at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965)
      	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011)
      	at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:391)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:382)
      	at hudson.ExtensionFinder._find(ExtensionFinder.java:151)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:308)
      	at hudson.ExtensionList.load(ExtensionList.java:295)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248)
      	- locked <0xb2602558> (a hudson.ExtensionList$Lock)
      	at hudson.ExtensionList.iterator(ExtensionList.java:138)
      	at hudson.triggers.Trigger.init(Trigger.java:293)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at hudson.init.InitializerFinder.invoke(InitializerFinder.java:120)
      	at hudson.init.InitializerFinder$TaskImpl.run(InitializerFinder.java:184)
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
      	at jenkins.model.Jenkins$7.runTask(Jenkins.java:893)
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:744)
      "UpdateCenter.init":
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:246)
      	- waiting to lock <0xb2602558> (a hudson.ExtensionList$Lock)
      	at hudson.ExtensionList.getComponents(ExtensionList.java:149)
      	at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:182)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248)
      	- locked <0xa2a5c080> (a hudson.DescriptorExtensionList)
      	at hudson.ExtensionList.iterator(ExtensionList.java:138)
      	at hudson.model.User.load(User.java:150)
      	- locked <0xa2a5bcd0> (a hudson.model.User)
      	at hudson.model.User.<init>(User.java:121)
      	at hudson.model.User.getOrCreate(User.java:342)
      	at hudson.model.User.get(User.java:331)
      	at hudson.model.User.get(User.java:299)
      	at hudson.model.User.get(User.java:354)
      	at hudson.model.User.current(User.java:366)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:78)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:62)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getHistoryDao(JobConfigHistorySaveableListener.java:49)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:28)
      	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:78)
      	at hudson.model.UpdateCenter.save(UpdateCenter.java:514)
      	- locked <0xb269fbd8> (a hudson.model.UpdateCenter)
      	at hudson.util.PersistedList.onModified(PersistedList.java:173)
      	at hudson.util.PersistedList._onModified(PersistedList.java:181)
      	at hudson.util.PersistedList.add(PersistedList.java:72)
      	at hudson.model.UpdateCenter.load(UpdateCenter.java:544)
      	- locked <0xb269fbd8> (a hudson.model.UpdateCenter)
      	at hudson.model.UpdateCenter.init(UpdateCenter.java:1538)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at hudson.init.InitializerFinder.invoke(InitializerFinder.java:120)
      	at hudson.init.InitializerFinder$TaskImpl.run(InitializerFinder.java:184)
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
      	at jenkins.model.Jenkins$7.runTask(Jenkins.java:893)
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:744)
      

          [JENKINS-20988] Deadlock inPluginUtils.getHistoryDao

          Code changed in jenkins
          User: Jesse Glick
          Path:
          src/main/java/hudson/plugins/jobConfigHistory/JobConfigHistoryPurger.java
          src/main/java/hudson/plugins/jobConfigHistory/PluginUtils.java
          http://jenkins-ci.org/commit/jobConfigHistory-plugin/55b2b3cf6ff42c1610a3462e50528b993764d089
          Log:
          [FIXED JENKINS-20988] Avoid making potentially expensive or locking calls like User.current() from inside an extension constructor.
          Anyway the “current user” is simply ACL.SYSTEM in this case, which we ought to treat like anonymous.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/plugins/jobConfigHistory/JobConfigHistoryPurger.java src/main/java/hudson/plugins/jobConfigHistory/PluginUtils.java http://jenkins-ci.org/commit/jobConfigHistory-plugin/55b2b3cf6ff42c1610a3462e50528b993764d089 Log: [FIXED JENKINS-20988] Avoid making potentially expensive or locking calls like User.current() from inside an extension constructor. Anyway the “current user” is simply ACL.SYSTEM in this case, which we ought to treat like anonymous.

          Code changed in jenkins
          User: Thomas de Grenier de Latour
          Path:
          src/main/java/hudson/plugins/jobConfigHistory/JobConfigHistorySaveableListener.java
          src/main/java/hudson/plugins/jobConfigHistory/PluginUtils.java
          src/test/java/hudson/plugins/jobConfigHistory/JobConfigHistorySaveableListenerTest.java
          http://jenkins-ci.org/commit/jobConfigHistory-plugin/6358945f3dfdc56a81edecfb7567992140714e3a
          Log:
          Avoid calling `User.current()` from `JobConfigHistorySaveableListener` during Jenkins initialization

          When `jobConfigHistory` is used used together with the `sonar` (2.2) plugin, we get the following stack:

          ```
          hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error
          WARNING: Failed to instantiate Key[type=hudson.plugins.sonar.SonarPublisher$DescriptorImpl, annotation=[none]]; skipping this component
          com.google.inject.ProvisionException: Guice provision errors:

          1) Tried proxying hudson.plugins.sonar.SonarPublisher$DescriptorImpl to support a circular dependency, but it is not an interface.

          1 error
          at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:52)
          at com.google.inject.Scopes$1$1.get(Scopes.java:65)
          at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:427)
          at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
          at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:1005)
          at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1058)
          at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:1001)
          at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:389)
          at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:380)
          at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:370)
          at hudson.ExtensionList.load(ExtensionList.java:300)
          at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
          at hudson.ExtensionList.getComponents(ExtensionList.java:154)
          at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:182)
          at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
          at hudson.ExtensionList.iterator(ExtensionList.java:143)
          at hudson.model.User.load(User.java:192)
          at hudson.model.User.<init>(User.java:143)
          at hudson.model.User.getOrCreate(User.java:443)
          at hudson.model.User.current(User.java:487)
          at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:71)
          at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:62)
          at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getHistoryDao(JobConfigHistorySaveableListener.java:49)
          at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:28)
          at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:80)
          at hudson.model.Descriptor.save(Descriptor.java:760)
          at hudson.plugins.sonar.SonarPublisher$DescriptorImpl.<init>(SonarPublisher.java:420)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
          at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
          at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
          at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:86)
          at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108)
          at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:88)
          at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:269)
          at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
          at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1058)
          at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
          at com.google.inject.Scopes$1$1.get(Scopes.java:65)
          at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:427)
          at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
          at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:1005)
          at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1051)
          at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:1001)
          at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:389)
          at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:380)
          at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:370)
          at hudson.ExtensionList.load(ExtensionList.java:300)
          at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
          at hudson.ExtensionList.getComponents(ExtensionList.java:154)
          at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:182)
          at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253)
          at hudson.ExtensionList.iterator(ExtensionList.java:143)
          at org.jenkinsci.plugins.xunit.AliasInitializer.addAliases(AliasInitializer.java:47)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:105)
          at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:169)
          at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
          at jenkins.model.Jenkins$7.runTask(Jenkins.java:903)
          at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
          at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at java.lang.Thread.run(Thread.java:745)
          ```

          When writing the `SonarPublisher` config, `JobConfigHistorySaveableListener` is triggered, leading to a `User.current()` call, and ultimately to a Guice error (circular dependency).
          Since config changes occuring during this startup phase are not linked to any user request, we can avoid the `User.current()` call, and keep the config history entry anonymous.
          Note this is kind if similar to JENKINS-20988.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Thomas de Grenier de Latour Path: src/main/java/hudson/plugins/jobConfigHistory/JobConfigHistorySaveableListener.java src/main/java/hudson/plugins/jobConfigHistory/PluginUtils.java src/test/java/hudson/plugins/jobConfigHistory/JobConfigHistorySaveableListenerTest.java http://jenkins-ci.org/commit/jobConfigHistory-plugin/6358945f3dfdc56a81edecfb7567992140714e3a Log: Avoid calling `User.current()` from `JobConfigHistorySaveableListener` during Jenkins initialization When `jobConfigHistory` is used used together with the `sonar` (2.2) plugin, we get the following stack: ``` hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error WARNING: Failed to instantiate Key[type=hudson.plugins.sonar.SonarPublisher$DescriptorImpl, annotation= [none] ]; skipping this component com.google.inject.ProvisionException: Guice provision errors: 1) Tried proxying hudson.plugins.sonar.SonarPublisher$DescriptorImpl to support a circular dependency, but it is not an interface. 1 error at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:52) at com.google.inject.Scopes$1$1.get(Scopes.java:65) at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:427) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:1005) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1058) at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:1001) at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:389) at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:380) at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:370) at hudson.ExtensionList.load(ExtensionList.java:300) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253) at hudson.ExtensionList.getComponents(ExtensionList.java:154) at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:182) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253) at hudson.ExtensionList.iterator(ExtensionList.java:143) at hudson.model.User.load(User.java:192) at hudson.model.User.<init>(User.java:143) at hudson.model.User.getOrCreate(User.java:443) at hudson.model.User.current(User.java:487) at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:71) at hudson.plugins.jobConfigHistory.PluginUtils.getHistoryDao(PluginUtils.java:62) at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getHistoryDao(JobConfigHistorySaveableListener.java:49) at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:28) at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:80) at hudson.model.Descriptor.save(Descriptor.java:760) at hudson.plugins.sonar.SonarPublisher$DescriptorImpl.<init>(SonarPublisher.java:420) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:86) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:88) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:269) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1058) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.Scopes$1$1.get(Scopes.java:65) at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:427) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:1005) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1051) at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:1001) at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:389) at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:380) at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:370) at hudson.ExtensionList.load(ExtensionList.java:300) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253) at hudson.ExtensionList.getComponents(ExtensionList.java:154) at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:182) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:253) at hudson.ExtensionList.iterator(ExtensionList.java:143) at org.jenkinsci.plugins.xunit.AliasInitializer.addAliases(AliasInitializer.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:105) at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:169) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282) at jenkins.model.Jenkins$7.runTask(Jenkins.java:903) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) ``` When writing the `SonarPublisher` config, `JobConfigHistorySaveableListener` is triggered, leading to a `User.current()` call, and ultimately to a Guice error (circular dependency). Since config changes occuring during this startup phase are not linked to any user request, we can avoid the `User.current()` call, and keep the config history entry anonymous. Note this is kind if similar to JENKINS-20988 .

            mfriedenhagen Mirko Friedenhagen
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: