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

Exception: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.parameterizedtrigger.TriggerBuilder

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • None
    • CentOS 6 x86_64, jre-1.7.0_04-fcs.x86_64, Jenkins 1.474, Parameterized trigger plugin 2.15

      Whenever I add a build step "trigger/call builds on other projects" and click save, I get the following error:

      Status Code: 500

      Exception: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.parameterizedtrigger.TriggerBuilder from {"configs":

      {"block":true,"buildStepFailureThreshold":"FAILURE","failureThreshold":"FAILURE","projects":"SlaveJob1","unstableThreshold":"UNSTABLE"}

      ,"kind":"hudson.plugins.parameterizedtrigger.TriggerBuilder","stapler-class":"hudson.plugins.parameterizedtrigger.TriggerBuilder"}
      Stacktrace:
      javax.servlet.ServletException: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.parameterizedtrigger.TriggerBuilder from {"configs":

      {"block":true,"buildStepFailureThreshold":"FAILURE","failureThreshold":"FAILURE","projects":"SlaveJob1","unstableThreshold":"UNSTABLE"}

      ,"kind":"hudson.plugins.parameterizedtrigger.TriggerBuilder","stapler-class":"hudson.plugins.parameterizedtrigger.TriggerBuilder"}
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:616)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
      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:574)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
      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:574)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
      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.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:47)
      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:166)
      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:173)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:63)
      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:215)
      at winstone.RequestHandlerThread.run(RequestHandlerThread.java:138)
      at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.parameterizedtrigger.TriggerBuilder from {"configs":

      {"block":true,"buildStepFailureThreshold":"FAILURE","failureThreshold":"FAILURE","projects":"SlaveJob1","unstableThreshold":"UNSTABLE"}

      ,"kind":"hudson.plugins.parameterizedtrigger.TriggerBuilder","stapler-class":"hudson.plugins.parameterizedtrigger.TriggerBuilder"}
      at hudson.model.Descriptor.newInstance(Descriptor.java:575)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:912)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:899)
      at hudson.util.DescribableList.rebuildHetero(DescribableList.java:203)
      at hudson.model.Project.submit(Project.java:202)
      at hudson.model.Job.doConfigSubmit(Job.java:990)
      at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:688)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
      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:574)
      ... 60 more
      Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.parameterizedtrigger.TriggerBuilder from {"configs":

      {"block":true,"buildStepFailureThreshold":"FAILURE","failureThreshold":"FAILURE","projects":"SlaveJob1","unstableThreshold":"UNSTABLE"}

      ,"kind":"hudson.plugins.parameterizedtrigger.TriggerBuilder","stapler-class":"hudson.plugins.parameterizedtrigger.TriggerBuilder"}
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:377)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:373)
      at hudson.model.Descriptor.newInstance(Descriptor.java:566)
      ... 76 more
      Caused by: java.lang.IllegalArgumentException: Failed to convert the configs parameter of the constructor public hudson.plugins.parameterizedtrigger.TriggerBuilder(java.util.List)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:627)
      ... 79 more
      Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig from

      {"block":true,"buildStepFailureThreshold":"FAILURE","failureThreshold":"FAILURE","projects":"SlaveJob1","unstableThreshold":"UNSTABLE"}

      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:633)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:669)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:377)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:625)
      ... 79 more
      Caused by: java.lang.IllegalArgumentException: Failed to convert the block parameter of the constructor public hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig(java.lang.String,hudson.plugins.parameterizedtrigger.BlockingBehaviour,java.util.List,java.util.List)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:627)
      ... 82 more
      Caused by: java.lang.IllegalArgumentException: Unable to convert to class hudson.plugins.parameterizedtrigger.BlockingBehaviour
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:688)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:377)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:625)
      ... 82 more

          [JENKINS-14495] Exception: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.parameterizedtrigger.TriggerBuilder

          Romu Hu created issue -

          I have exactly the same problem with Jenkins 1.474 and plugin version 1.15. The front end effect is that on adding a pramerterized trigger as build step, only the Headline appears. Adding the trigger a second time shows the complete form. Setting the blocking-checkbox and pressing save or apply returns the exception above.

          Frederik Fromm added a comment - I have exactly the same problem with Jenkins 1.474 and plugin version 1.15. The front end effect is that on adding a pramerterized trigger as build step, only the Headline appears. Adding the trigger a second time shows the complete form. Setting the blocking-checkbox and pressing save or apply returns the exception above.

          Fabio Plachetta added a comment - - edited

          Same for me here, just as Frederik and Romu reported. First adds an empty heading, then the correct content. After saving it crashes with above exception. I have Jenkins v1.474

          Fabio Plachetta added a comment - - edited Same for me here, just as Frederik and Romu reported. First adds an empty heading, then the correct content. After saving it crashes with above exception. I have Jenkins v1.474

          Tibor Ficsor added a comment -

          Same here, please share workaround if available. (Jenkins 1.474, Parameterized trigger plugin 2.15)

          Tibor Ficsor added a comment - Same here, please share workaround if available. (Jenkins 1.474, Parameterized trigger plugin 2.15)

          Stephan Grimm added a comment -

          It works after downgrading to Jenkins 1.471 and Parameterized Trigger Plugin 2.14.

          Stephan Grimm added a comment - It works after downgrading to Jenkins 1.471 and Parameterized Trigger Plugin 2.14.

          I can report I am experiencing the problem as well with 1.475. Existing jobs created before the upgrade still work fine, but I cannot use the Parameterized Trigger plugin for new jobs.

          Shawn M. Jones added a comment - I can report I am experiencing the problem as well with 1.475. Existing jobs created before the upgrade still work fine, but I cannot use the Parameterized Trigger plugin for new jobs.

          cjo9900 added a comment -

          It looks like some of the changes in the core of 1.474 have changed how the json is created, as taking a similar case for 1.473 and 2.15 of the plugin gives the json for that case

          {
          	"configs": 
          	{
          		"projects": "1_test", 
          		"block": 
          		{
          			"buildStepFailureThreshold": "FAILURE", 
          			"failureThreshold": "FAILURE", 
          			"unstableThreshold": "UNSTABLE"
          		}, 
          	},
          	"stapler-class": "hudson.plugins.parameterizedtrigger.TriggerBuilder", 
          	"kind": "hudson.plugins.parameterizedtrigger.TriggerBuilder"
          },
          

          and for the 1.474 with 2.15

          {
          "configs":
          	{
          		"block":true,
          		"buildStepFailureThreshold":"FAILURE",
          		"failureThreshold":"FAILURE",
          		"projects":"SlaveJob1",
          		"unstableThreshold":"UNSTABLE"
          	},
          "kind":"hudson.plugins.parameterizedtrigger.TriggerBuilder",
          "stapler-class":"hudson.plugins.parameterizedtrigger.TriggerBuilder"
          }
          

          you can see that block encloses three elements in 1.473, but in 1.474 these are at the same level, so it looks as if the optional block behaviour has changed.

          Which is used in the BlockableBuildTriggerConfig jelly that is used for the configs.

            <f:optionalBlock field="block" title="${%Block until the triggered projects finish their builds}" checked="${instance.block!=null}">
              <j:set var="descriptor" value="${app.getDescriptorOrDie(descriptor.getPropertyType(field).clazz)}" />
              <j:set var="instance" value="${instance[field]}"/>
              <st:include from="${descriptor}" page="${descriptor.configPage}" />
            </f:optionalBlock>
          

          cjo9900 added a comment - It looks like some of the changes in the core of 1.474 have changed how the json is created, as taking a similar case for 1.473 and 2.15 of the plugin gives the json for that case { "configs" : { "projects" : "1_test" , "block" : { "buildStepFailureThreshold" : "FAILURE" , "failureThreshold" : "FAILURE" , "unstableThreshold" : "UNSTABLE" }, }, "stapler-class" : "hudson.plugins.parameterizedtrigger.TriggerBuilder" , "kind" : "hudson.plugins.parameterizedtrigger.TriggerBuilder" }, and for the 1.474 with 2.15 { "configs" : { "block" : true , "buildStepFailureThreshold" : "FAILURE" , "failureThreshold" : "FAILURE" , "projects" : "SlaveJob1" , "unstableThreshold" : "UNSTABLE" }, "kind" : "hudson.plugins.parameterizedtrigger.TriggerBuilder" , "stapler-class" : "hudson.plugins.parameterizedtrigger.TriggerBuilder" } you can see that block encloses three elements in 1.473, but in 1.474 these are at the same level, so it looks as if the optional block behaviour has changed. Which is used in the BlockableBuildTriggerConfig jelly that is used for the configs. <f:optionalBlock field= "block" title= "${%Block until the triggered projects finish their builds}" checked= "${instance.block!= null }" > <j:set var = "descriptor" value= "${app.getDescriptorOrDie(descriptor.getPropertyType(field).clazz)}" /> <j:set var = "instance" value= "${instance[field]}" /> <st:include from= "${descriptor}" page= "${descriptor.configPage}" /> </f:optionalBlock>

          Owen Mehegan added a comment -

          Argh, this is hitting me too, and I use Parameterized Trigger all over the place

          Owen Mehegan added a comment - Argh, this is hitting me too, and I use Parameterized Trigger all over the place
          cjo9900 made changes -
          Component/s New: core [ 15593 ]

          cjo9900 added a comment -

          Looks to be the same issue as JENKINS-14514 as the build triggers are displayed using <f:repeatable>

          However the issue still occurs with that fix included.

          The new behaviour with 1.477-SNAPSHOT is that the configuration section is displayed, with the <f:optionalBlock field="block"> expanded even though the checkbox is unchecked which is incorrect.

          @Jesse can you look at this as it is related to the jelly and javascript changes that have been made in 1.474+.

          cjo9900 added a comment - Looks to be the same issue as JENKINS-14514 as the build triggers are displayed using <f:repeatable> However the issue still occurs with that fix included. The new behaviour with 1.477-SNAPSHOT is that the configuration section is displayed, with the <f:optionalBlock field="block"> expanded even though the checkbox is unchecked which is incorrect. @Jesse can you look at this as it is related to the jelly and javascript changes that have been made in 1.474+.

            jglick Jesse Glick
            romu Romu Hu
            Votes:
            4 Vote for this issue
            Watchers:
            17 Start watching this issue

              Created:
              Updated:
              Resolved: