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

Circular dependency error with JobConfigHistory

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • None
    • jobConfigHistory:1176.v1b_4290db_41a_5 or later
    • 1207.vd28a_54732f92

      Jenkins startup components are not properly loaded due to a circular dependency:

      2023-03-07 06:04:55.065+0000 [id=53]	WARNING	h.ExtensionFinder$GuiceFinder$FaultTolerantScope$1#error: Failed to instantiate Key[type=jenkins.telemetry.Correlator, annotation=[none]]; skipping this component
      com.google.inject.ProvisionException: Unable to provision, see the following errors:
      
      1) [Guice/CanNotProxyClass]: Tried proxying Correlator to support a circular dependency, but it is not an interface.
      
      Learn more:
        https://github.com/google/guice/wiki/CAN_NOT_PROXY_CLASS
      
      1 error
      
      ======================
      Full classname legend:
      ======================
      Correlator: "jenkins.telemetry.Correlator"
      ========================
      End of classname legend:
      ========================
      
      	at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:251)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:43)
      	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      	at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:445)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:403)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:394)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
      	at hudson.ExtensionList.load(ExtensionList.java:384)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.getComponents(ExtensionList.java:184)
      	at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:213)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.iterator(ExtensionList.java:172)
      	at hudson.ExtensionList.get(ExtensionList.java:149)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getPlugin(PluginUtils.java:58)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getPlugin(JobConfigHistorySaveableListener.java:73)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:57)
      	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:82)
      	at hudson.model.Descriptor.save(Descriptor.java:913)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration.setPath(PrometheusConfiguration.java:116)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration.<init>(PrometheusConfiguration.java:67)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration$$FastClassByGuice$$621878535.GUICE$TRAMPOLINE(<generated>)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration$$FastClassByGuice$$621878535.apply(<generated>)
      	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
      	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
      	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
      	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
      	at hudson.ExtensionFinder$GuiceFinder$SezpozModule.onProvision(ExtensionFinder.java:607)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
      	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
      	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
      	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      	at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:445)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:403)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:394)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
      	at hudson.ExtensionList.load(ExtensionList.java:384)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.getComponents(ExtensionList.java:184)
      	at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:213)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.iterator(ExtensionList.java:172)
      	at hudson.ExtensionList.get(ExtensionList.java:149)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getPlugin(PluginUtils.java:58)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getPlugin(JobConfigHistorySaveableListener.java:73)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:57)
      	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:82)
      	at hudson.model.Descriptor.save(Descriptor.java:913)
      	at jenkins.telemetry.Correlator.<init>(Correlator.java:52)
      	at jenkins.telemetry.Correlator$$FastClassByGuice$$322388084.GUICE$TRAMPOLINE(<generated>)
      	at jenkins.telemetry.Correlator$$FastClassByGuice$$322388084.apply(<generated>)
      	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
      	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
      	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
      	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
      	at hudson.ExtensionFinder$GuiceFinder$SezpozModule.onProvision(ExtensionFinder.java:607)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
      	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
      	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
      	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      	at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:445)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:403)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:394)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
      	at hudson.ExtensionList.load(ExtensionList.java:384)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.iterator(ExtensionList.java:172)
      	at hudson.diagnosis.NullIdDescriptorMonitor.verify(NullIdDescriptorMonitor.java:72)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:109)
      	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:185)
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:305)
      	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1164)
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:221)
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
      	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:829)
      

      This also happens when the Prometheus plugin is installed:

      2023-03-07 06:04:55.069+0000 [id=53]	WARNING	h.ExtensionFinder$GuiceFinder$FaultTolerantScope$1#error: Failed to instantiate Key[type=org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration, annotation=[none]]; skipping this component
      com.google.inject.ProvisionException: Unable to provision, see the following errors:
      
      1) [Guice/CanNotProxyClass]: Tried proxying PrometheusConfiguration to support a circular dependency, but it is not an interface.
      
      Learn more:
        https://github.com/google/guice/wiki/CAN_NOT_PROXY_CLASS
      
      1 error
      
      ======================
      Full classname legend:
      ======================
      PrometheusConfiguration: "org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration"
      ========================
      End of classname legend:
      ========================
      
      	at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:251)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:43)
      	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      	at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:445)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:403)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:394)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
      	at hudson.ExtensionList.load(ExtensionList.java:384)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.getComponents(ExtensionList.java:184)
      	at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:213)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.iterator(ExtensionList.java:172)
      	at hudson.ExtensionList.get(ExtensionList.java:149)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getPlugin(PluginUtils.java:58)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getPlugin(JobConfigHistorySaveableListener.java:73)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:57)
      	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:82)
      	at hudson.model.Descriptor.save(Descriptor.java:913)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration.setPath(PrometheusConfiguration.java:116)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration.<init>(PrometheusConfiguration.java:67)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration$$FastClassByGuice$$621878535.GUICE$TRAMPOLINE(<generated>)
      	at org.jenkinsci.plugins.prometheus.config.PrometheusConfiguration$$FastClassByGuice$$621878535.apply(<generated>)
      	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
      	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
      	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
      	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
      	at hudson.ExtensionFinder$GuiceFinder$SezpozModule.onProvision(ExtensionFinder.java:607)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
      	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
      	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
      	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      	at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:445)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:403)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:394)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
      	at hudson.ExtensionList.load(ExtensionList.java:384)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.getComponents(ExtensionList.java:184)
      	at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:213)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.iterator(ExtensionList.java:172)
      	at hudson.ExtensionList.get(ExtensionList.java:149)
      	at hudson.plugins.jobConfigHistory.PluginUtils.getPlugin(PluginUtils.java:58)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.getPlugin(JobConfigHistorySaveableListener.java:73)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:57)
      	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:82)
      	at hudson.model.Descriptor.save(Descriptor.java:913)
      	at jenkins.telemetry.Correlator.<init>(Correlator.java:52)
      	at jenkins.telemetry.Correlator$$FastClassByGuice$$322388084.GUICE$TRAMPOLINE(<generated>)
      	at jenkins.telemetry.Correlator$$FastClassByGuice$$322388084.apply(<generated>)
      	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
      	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
      	at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
      	at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109)
      	at hudson.ExtensionFinder$GuiceFinder$SezpozModule.onProvision(ExtensionFinder.java:607)
      	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117)
      	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
      	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
      	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
      	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169)
      	at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:445)
      	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
      	at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101)
      	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:403)
      	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:394)
      	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
      	at hudson.ExtensionList.load(ExtensionList.java:384)
      	at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
      	at hudson.ExtensionList.iterator(ExtensionList.java:172)
      	at hudson.diagnosis.NullIdDescriptorMonitor.verify(NullIdDescriptorMonitor.java:72)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:109)
      	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:185)
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:305)
      	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1164)
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:221)
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
      	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:829)
      

      In those stacktraces, we see the jobConfigHistory twice in the stacktrace. Per my understanding it is the culprit.

            allan_burdajewicz Allan BURDAJEWICZ
            allan_burdajewicz Allan BURDAJEWICZ
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: