Skip to content

[JENKINS-36666] Jenkins startup fails due to cyclic dependency miscalculation #17331

Description

@jenkins-infra-bot

To reproduce in 2.14-SNAPSHOT:

  • start on a new home
  • swat aside the setup wizard
  • install github-branch-source including all dependencies
  • manually upload workflow-scm-step-2.0.hpi (downgrading from the 2.2 installed from the UC)
  • restart

You will see a warning about cyclic dependencies:

... hudson.PluginManager$1$3$2$3 reactOnCycle
SEVERE: found cycle in plugin dependencies: (root=Plugin:workflow-scm-step, deactivating all involved) Plugin:workflow-scm-step -> Plugin:git -> Plugin:workflow-scm-step

Which looks fine (you need to update workflow-scm-step to solve the conflict) until you realize it is disabling git but not its dependencies. So then you see a lot of extension loading errors, which would normally be just noise:

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

1) Error injecting constructor, java.lang.NoClassDefFoundError: jenkins/plugins/git/AbstractGitSCMSource
  at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl.(GitHubSCMSource.java:722)

1 error
	at ...
	at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:386)
	at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:377)
	at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:471)
	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:359)
	at org.jenkinsci.plugins.github.migration.Migrator.migrate(Migrator.java:40)
	at org.jenkinsci.plugins.github.GitHubPlugin.postInitialize(GitHubPlugin.java:39)
	at hudson.PluginManager$2$4$5.run(PluginManager.java:537)
	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$7.runTask(Jenkins.java:998)
	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)
Caused by: java.lang.NoClassDefFoundError: jenkins/plugins/git/AbstractGitSCMSource
	at ...
	at java.lang.Class.getEnclosingClass(Class.java:1277)
	at hudson.model.Descriptor.(Descriptor.java:270)
	at jenkins.scm.api.SCMSourceDescriptor.(SCMSourceDescriptor.java:42)
	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl.(GitHubSCMSource.java:722)
	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl$$FastClassByGuice$$fee958e6.newInstance()
	at ...
	... 28 more
Caused by: java.lang.ClassNotFoundException: jenkins.plugins.git.AbstractGitSCMSource
	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376)
	at ...
... hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error
WARNING: Failed to instantiate Key[type=org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator$DescriptorImpl, annotation=[none]]; skipping this component
com.google.inject.ProvisionException: Guice provision errors:

1) Error injecting constructor, java.lang.NoClassDefFoundError: jenkins/plugins/git/AbstractGitSCMSource
  at org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator$DescriptorImpl.(GitHubSCMNavigator.java:326)

1 error
	at ...

However after all this you get

... hudson.init.impl.InstallUncaughtExceptionHandler$DefaultUncaughtExceptionHandler uncaughtException
SEVERE: A thread (pool-6-thread-5/40) died unexpectedly due to an uncaught exception, this may leave your Jenkins in a bad way and is usually indicative of a bug in the code.
java.lang.NoClassDefFoundError: org/jenkinsci/plugins/github_branch_source/GitHubSCMSource
	at java.lang.Class.getDeclaringClass0(Native Method)
	at java.lang.Class.getDeclaringClass(Class.java:1235)
	at java.lang.Class.getEnclosingClass(Class.java:1277)
	at java.lang.Class.getSimpleBinaryName(Class.java:1443)
	at java.lang.Class.getSimpleName(Class.java:1309)
	at hudson.init.TaskMethodFinder.getDisplayNameOf(TaskMethodFinder.java:80)
	at hudson.init.TaskMethodFinder$TaskImpl.getDisplayName(TaskMethodFinder.java:167)
	at jenkins.InitReactorRunner$1.onTaskStarted(InitReactorRunner.java:64)
	at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onTaskStarted(ReactorListener.java:89)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:208)
	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)

and at this point Jenkins startup ends; the UI just says Please wait while Jenkins is restarting... forever.

These steps to reproduce are somewhat artificial. The original report comes from CloudBees Jenkins Enterprise: after starting 1.642.4.1 and installing subversion from the update center, Jenkins will not start (though in that case the fatal error comes a little later and lacks the "in a bad way" message.


Originally reported by jglick, imported from: Jenkins startup fails due to cyclic dependency miscalculation
  • assignee: jglick
  • status: Resolved
  • priority: Critical
  • component(s): core
  • label(s): plugin-manager, robustness
  • resolution: Fixed
  • resolved: 2016-07-25T17:02:39+00:00
  • votes: 0
  • watchers: 3
  • imported: 2025-11-24
Raw content of original issue

To reproduce in 2.14-SNAPSHOT:

  • start on a new home
  • swat aside the setup wizard
  • install github-branch-source including all dependencies
  • manually upload workflow-scm-step-2.0.hpi (downgrading from the 2.2 installed from the UC)
  • restart

You will see a warning about cyclic dependencies:

... hudson.PluginManager$1$3$2$3 reactOnCycle
SEVERE: found cycle in plugin dependencies: (root=Plugin:workflow-scm-step, deactivating all involved) Plugin:workflow-scm-step -> Plugin:git -> Plugin:workflow-scm-step

Which looks fine (you need to update workflow-scm-step to solve the conflict) until you realize it is disabling git but not its dependencies. So then you see a lot of extension loading errors, which would normally be just noise:

... hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error
WARNING: Failed to instantiate Key[type=org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl, annotation=[none]]; skipping this component
com.google.inject.ProvisionException: Guice provision errors:
  1. Error injecting constructor, java.lang.NoClassDefFoundError: jenkins/plugins/git/AbstractGitSCMSource
    at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl.<init>(GitHubSCMSource.java:722)

1 error
at ...
at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:386)
at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:377)
at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:471)
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:359)
at org.jenkinsci.plugins.github.migration.Migrator.migrate(Migrator.java:40)
at org.jenkinsci.plugins.github.GitHubPlugin.postInitialize(GitHubPlugin.java:39)
at hudson.PluginManager$2$4$5.run(PluginManager.java:537)
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$7.runTask(Jenkins.java:998)
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)
Caused by: java.lang.NoClassDefFoundError: jenkins/plugins/git/AbstractGitSCMSource
at ...
at java.lang.Class.getEnclosingClass(Class.java:1277)
at hudson.model.Descriptor.<init>(Descriptor.java:270)
at jenkins.scm.api.SCMSourceDescriptor.<init>(SCMSourceDescriptor.java:42)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl.<init>(GitHubSCMSource.java:722)
at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource$DescriptorImpl$$FastClassByGuice$$fee958e6.newInstance(<generated>)
at ...
... 28 more
Caused by: java.lang.ClassNotFoundException: jenkins.plugins.git.AbstractGitSCMSource
at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376)
at ...
... hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error
WARNING: Failed to instantiate Key[type=org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator$DescriptorImpl, annotation=[none]]; skipping this component
com.google.inject.ProvisionException: Guice provision errors:

  1. Error injecting constructor, java.lang.NoClassDefFoundError: jenkins/plugins/git/AbstractGitSCMSource
    at org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator$DescriptorImpl.<init>(GitHubSCMNavigator.java:326)

1 error
at ...

However after all this you get

... hudson.init.impl.InstallUncaughtExceptionHandler$DefaultUncaughtExceptionHandler uncaughtException
SEVERE: A thread (pool-6-thread-5/40) died unexpectedly due to an uncaught exception, this may leave your Jenkins in a bad way and is usually indicative of a bug in the code.
java.lang.NoClassDefFoundError: org/jenkinsci/plugins/github_branch_source/GitHubSCMSource
	at java.lang.Class.getDeclaringClass0(Native Method)
	at java.lang.Class.getDeclaringClass(Class.java:1235)
	at java.lang.Class.getEnclosingClass(Class.java:1277)
	at java.lang.Class.getSimpleBinaryName(Class.java:1443)
	at java.lang.Class.getSimpleName(Class.java:1309)
	at hudson.init.TaskMethodFinder.getDisplayNameOf(TaskMethodFinder.java:80)
	at hudson.init.TaskMethodFinder$TaskImpl.getDisplayName(TaskMethodFinder.java:167)
	at jenkins.InitReactorRunner$1.onTaskStarted(InitReactorRunner.java:64)
	at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onTaskStarted(ReactorListener.java:89)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:208)
	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)

and at this point Jenkins startup ends; the UI just says Please wait while Jenkins is restarting... forever.

These steps to reproduce are somewhat artificial. The original report comes from CloudBees Jenkins Enterprise: after starting 1.642.4.1 and installing subversion from the update center, Jenkins will not start (though in that case the fatal error comes a little later and lacks the "in a bad way" message.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions