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

Cannot load a class in depended plugin after install before restart

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Minor Minor
    • core
    • None
    • Jenkins ver. 1.509.2

      At some point this started happening on attempt to delete a job:

      Status Code: 500
      Exception: java.lang.NoClassDefFoundError: org/jenkinsci/plugins/conditionalbuildstep/ConditionalBuildStepHelper
      Stacktrace:

      javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/jenkinsci/plugins/conditionalbuildstep/ConditionalBuildStepHelper
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:719)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:770)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:677)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:770)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:677)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:770)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:583)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:214)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
      at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
      at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
      at hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:66)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
      at hudson.plugins.scm_sync_configuration.extensions.ScmSyncConfigurationFilter$1.call(ScmSyncConfigurationFilter.java:46)
      at hudson.plugins.scm_sync_configuration.ScmSyncConfigurationDataProvider.provideRequestDuring(ScmSyncConfigurationDataProvider.java:103)
      at hudson.plugins.scm_sync_configuration.extensions.ScmSyncConfigurationFilter.doFilter(ScmSyncConfigurationFilter.java:42)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:208)
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181)
      at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:86)
      at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:84)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:98)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
      at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
      at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227)
      at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      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:722)
      Caused by: java.lang.NoClassDefFoundError: org/jenkinsci/plugins/conditionalbuildstep/ConditionalBuildStepHelper
      at hudson.plugins.parameterizedtrigger.Plugin$RenameListener.deleteInConditionalBuildStep(Plugin.java:152)
      at hudson.plugins.parameterizedtrigger.Plugin$RenameListener.onDeleted(Plugin.java:105)
      at jenkins.model.Jenkins.onDeleted(Jenkins.java:2431)
      at jenkins.model.Jenkins.onDeleted(Jenkins.java:309)
      at hudson.model.AbstractItem.invokeOnDeleted(AbstractItem.java:523)
      at hudson.model.AbstractItem.delete(AbstractItem.java:510)
      at hudson.model.Job.delete(Job.java:587)
      at hudson.model.AbstractProject.doDoDelete(AbstractProject.java:1880)
      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:601)
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
      at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:29)
      at org.kohsuke.stapler.Function$InterceptedFunction.invoke(Function.java:389)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:677)
      ... 71 more

          [JENKINS-19976] Cannot load a class in depended plugin after install before restart

          pancake created issue -

          Teemu Toivola added a comment -

          I've seen this same issue after installing Conditional BuildStep Plugin to Jenkins ver. 1.509.3 without doing a Jenkins restart. After upgrading to 1.509.4 and giving a restart, deleting jobs is again possible.

          Teemu Toivola added a comment - I've seen this same issue after installing Conditional BuildStep Plugin to Jenkins ver. 1.509.3 without doing a Jenkins restart. After upgrading to 1.509.4 and giving a restart, deleting jobs is again possible.
          Teemu Toivola made changes -
          Component/s New: conditional-buildstep [ 15947 ]
          Component/s Original: core [ 15593 ]
          Priority Original: Minor [ 4 ] New: Major [ 3 ]

          Eric Pyle added a comment -

          We're also seeing this in Jenkins 1.466.2 with Conditional Build Step plugin 0.3. Note: the job you attempted to delete is removed on disk, but is not removed from Jenkins' memory. We restarted Jenkins this morning (running on Linux using Winstone) but still cannot delete jobs.

          Eric Pyle added a comment - We're also seeing this in Jenkins 1.466.2 with Conditional Build Step plugin 0.3. Note: the job you attempted to delete is removed on disk, but is not removed from Jenkins' memory. We restarted Jenkins this morning (running on Linux using Winstone) but still cannot delete jobs.

          Andrew Bayer added a comment -

          I'm seeing this with an older version of the conditional buildstep plugin and the latest version of the parameterized trigger plugin, 2.21 - I think it's related to JENKINS-19793?

          Andrew Bayer added a comment - I'm seeing this with an older version of the conditional buildstep plugin and the latest version of the parameterized trigger plugin, 2.21 - I think it's related to JENKINS-19793 ?
          Andrew Bayer made changes -
          Component/s New: parameterized-trigger [ 15592 ]
          Assignee New: Oleg Nenashev [ oleg_nenashev ]
          Priority Original: Major [ 3 ] New: Blocker [ 1 ]

          Oleg Nenashev added a comment -

          I also suspect a parameterized trigger.
          ConditinalBuildStepHelper class have not even changed since its creation in 066515eab1dc35aa8fa9073cbfc71744fe8eb30d, so it cannot affect the issue.

          The real origin of the issue is https://github.com/jenkinsci/parameterized-trigger-plugin/pull/42/, but I don't see any critical changes here. I've also tried to create a reproducible scenario, but have not succeeded yet.

          Oleg Nenashev added a comment - I also suspect a parameterized trigger. ConditinalBuildStepHelper class have not even changed since its creation in 066515eab1dc35aa8fa9073cbfc71744fe8eb30d, so it cannot affect the issue. The real origin of the issue is https://github.com/jenkinsci/parameterized-trigger-plugin/pull/42/ , but I don't see any critical changes here. I've also tried to create a reproducible scenario, but have not succeeded yet.

          ikedam added a comment -

          How to reproduce:

          1. Install Parameterized Trigger plugin.
          2. Install Conditional BuildStep plugin.
          3. DO NOT RESTART JENKINS HERE.
          4. Create a job.
          5. Delete the job.

          Workaround:

          • Restart Jenkins after installed Conditional BuildStep plugin

          Cause:
          Parameterized Trigger plugin asks Jenkins whether Conditional BuildStep plugin is installed before accessing to it.
          But without restart after installing Conditional BuildStep plugin, though Jenkins states that it is installed, it is not visible to Parameterized Trigger plugin (to be exact, its class loaders).

          ikedam added a comment - How to reproduce: Install Parameterized Trigger plugin. Install Conditional BuildStep plugin. DO NOT RESTART JENKINS HERE. Create a job. Delete the job. Workaround: Restart Jenkins after installed Conditional BuildStep plugin Cause: Parameterized Trigger plugin asks Jenkins whether Conditional BuildStep plugin is installed before accessing to it. But without restart after installing Conditional BuildStep plugin, though Jenkins states that it is installed, it is not visible to Parameterized Trigger plugin (to be exact, its class loaders).

          The scenario described, can not be handled by a plugin. This only happens if an optional dependency (plugin) gets installed after the origin plugin. Jenkins tells (correctly) the plugin is installed, but the classes of the new plugin are not available in the class loader to the original plugin.
          If possible, then this can only be fixed in the core.

          Dominik Bartholdi added a comment - The scenario described, can not be handled by a plugin. This only happens if an optional dependency (plugin) gets installed after the origin plugin. Jenkins tells (correctly) the plugin is installed, but the classes of the new plugin are not available in the class loader to the original plugin. If possible, then this can only be fixed in the core.

          I also don't think this is a blocker - there is an easy workaround: restart. That's how it used to be earlier on anyway.

          Dominik Bartholdi added a comment - I also don't think this is a blocker - there is an easy workaround: restart. That's how it used to be earlier on anyway.

            ikedam ikedam
            pancake pancake
            Votes:
            3 Vote for this issue
            Watchers:
            16 Start watching this issue

              Created:
              Updated:
              Resolved: