-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Jenkins 1.642.1
sonar-2.2+
p4-plugin-1.3.6+
When sonar-plugin 2.2 (and later) and p4-plugin 1.3.6 (and later) are both installed, the following warning warning is generated on Jenkins startup:
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:388) at hudson.ExtensionList.load(ExtensionList.java:349) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:287) at hudson.ExtensionList.iterator(ExtensionList.java:156) at jenkins.model.Jenkins.getDescriptor(Jenkins.java:1207) at org.jenkinsci.plugins.p4.ConfigurationListener.onChange(ConfigurationListener.java:28) at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:81) at hudson.model.Descriptor.save(Descriptor.java:856) at hudson.plugins.sonar.SonarPublisher$DescriptorImpl.<init>(SonarPublisher.java:420) at hudson.plugins.sonar.SonarPublisher$DescriptorImpl$$FastClassByGuice$$46a6cf4e.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: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:388) at hudson.ExtensionList.load(ExtensionList.java:349) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:287) at hudson.ExtensionList.getComponents(ExtensionList.java:167) at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:185) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:287) at hudson.ExtensionList.iterator(ExtensionList.java:156) at hudson.ExtensionList.get(ExtensionList.java:147) at com.cloudbees.jenkins.GitHubPushTrigger$DescriptorImpl.get(GitHubPushTrigger.java:320) at org.jenkinsci.plugins.github.migration.Migrator.migrate(Migrator.java:41) at org.jenkinsci.plugins.github.GitHubPlugin.postInitialize(GitHubPlugin.java:39) at hudson.PluginManager$2$1$2.run(PluginManager.java:403) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282) at jenkins.model.Jenkins$8.runTask(Jenkins.java:924) 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:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
This can be easily reproduce. With either sonar-plugin:2.1 or p4-plugin:1.3.5, there is no warning.
In p4-plugin version 1.3.6, a SaveableListener extension has been added:
- https://github.com/jenkinsci/p4-plugin/blob/p4-1.3.6/src/main/java/org/jenkinsci/plugins/p4/ConfigurationListener.java#L28
In sonar-plugin version 2.2, a `save()` method has been added in the constructor of the SonarPublisher default constructor: - https://github.com/SonarSource/jenkins-sonar-plugin/blob/2.2/src/main/java/hudson/plugins/sonar/SonarPublisher.java#L420
- links to
The `save()` used at initialization seems to be another cause of the issue: https://github.com/SonarSource/jenkins-sonar-plugin/blob/master/src/main/java/hudson/plugins/sonar/SonarGlobalConfiguration.java#L51