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

RuntimeException if you try to save a config with a choice parameter that has no choices

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core
    • None
    • Linux

      1. Edit a job's configuration
      2. Choose 'This build is parameterized'
      3. Add a 'Choice' parameter, name it, but do not enter any choices
      4. Save the configuration

      You get a RuntimeException and stack trace. A more user-friendly error would be preferable. It took me a few minutes to realize my mistake. Full stack trace:

      Exception: java.lang.RuntimeException: Failed to instantiate class hudson.model.ChoiceParameterDefinition from

      {"name":"foo","choices":"","description":"","stapler-class":"hudson.model.ChoiceParameterDefinition","kind":"hudson.model.ChoiceParameterDefinition"}

      Stacktrace:
      javax.servlet.ServletException: java.lang.RuntimeException: Failed to instantiate class hudson.model.ChoiceParameterDefinition from

      {"name":"foo","choices":"","description":"","stapler-class":"hudson.model.ChoiceParameterDefinition","kind":"hudson.model.ChoiceParameterDefinition"}

      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.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
      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:67)
      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:441)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.RuntimeException: Failed to instantiate class hudson.model.ChoiceParameterDefinition from

      {"name":"foo","choices":"","description":"","stapler-class":"hudson.model.ChoiceParameterDefinition","kind":"hudson.model.ChoiceParameterDefinition"}

      at hudson.model.Descriptor.newInstance(Descriptor.java:602)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:941)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:926)
      at hudson.model.ParametersDefinitionProperty$DescriptorImpl.newInstance(ParametersDefinitionProperty.java:204)
      at hudson.model.JobProperty.reconfigure(JobProperty.java:178)
      at hudson.model.JobProperty.reconfigure(JobProperty.java:75)
      at hudson.util.DescribableList.rebuild(DescribableList.java:171)
      at hudson.model.Job.doConfigSubmit(Job.java:1052)
      at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:758)
      at sun.reflect.GeneratedMethodAccessor1280.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      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:677)
      ... 62 more
      Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.model.ChoiceParameterDefinition from

      {"name":"foo","choices":"","description":"","stapler-class":"hudson.model.ChoiceParameterDefinition","kind":"hudson.model.ChoiceParameterDefinition"}

      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:596)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:391)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:387)
      at hudson.model.Descriptor.newInstance(Descriptor.java:593)
      ... 79 more
      Caused by: java.lang.IllegalArgumentException: No choices found
      at hudson.model.ChoiceParameterDefinition.<init>(ChoiceParameterDefinition.java:26)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:438)
      at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:76)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:594)
      ... 82 more

          [JENKINS-18434] RuntimeException if you try to save a config with a choice parameter that has no choices

          This is fixed by https://github.com/jenkinsci/jenkins/pull/968 please comment.

          Andrew Kiellor added a comment - This is fixed by https://github.com/jenkinsci/jenkins/pull/968 please comment.

          Code changed in jenkins
          User: Andrew Kiellor
          Path:
          core/src/main/java/hudson/model/ChoiceParameterDefinition.java
          core/src/main/java/jenkins/model/Jenkins.java
          core/src/main/resources/hudson/model/ChoiceParameterDefinition/config.jelly
          core/src/main/resources/hudson/model/Messages.properties
          core/src/test/java/hudson/model/ChoiceParameterDefinitionTest.java
          test/src/test/java/jenkins/model/JenkinsTest.java
          http://jenkins-ci.org/commit/jenkins/d244b6b69aa013ca4818c3e4de15f9b9d4c8427b
          Log:
          FIXES JENKINS-18434 - Added validation error to Parameterized build choice, removed hard error.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Kiellor Path: core/src/main/java/hudson/model/ChoiceParameterDefinition.java core/src/main/java/jenkins/model/Jenkins.java core/src/main/resources/hudson/model/ChoiceParameterDefinition/config.jelly core/src/main/resources/hudson/model/Messages.properties core/src/test/java/hudson/model/ChoiceParameterDefinitionTest.java test/src/test/java/jenkins/model/JenkinsTest.java http://jenkins-ci.org/commit/jenkins/d244b6b69aa013ca4818c3e4de15f9b9d4c8427b Log: FIXES JENKINS-18434 - Added validation error to Parameterized build choice, removed hard error.

          Code changed in jenkins
          User: Andrew Kiellor
          Path:
          changelog.html
          cli/pom.xml
          core/pom.xml
          core/src/main/java/hudson/cli/BuildCommand.java
          core/src/main/java/hudson/init/InitializerFinder.java
          core/src/main/java/hudson/init/TaskMethodFinder.java
          core/src/main/java/hudson/init/TermMilestone.java
          core/src/main/java/hudson/init/Terminator.java
          core/src/main/java/hudson/init/TerminatorFinder.java
          core/src/main/java/hudson/model/AllView.java
          core/src/main/java/hudson/model/Computer.java
          core/src/main/java/hudson/model/Executor.java
          core/src/main/java/hudson/model/OneOffExecutor.java
          core/src/main/java/hudson/model/Queue.java
          core/src/main/java/hudson/node_monitors/NodeMonitorUpdater.java
          core/src/main/java/hudson/slaves/NodeProvisioner.java
          core/src/main/java/jenkins/model/Jenkins.java
          core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java
          core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm.jelly
          core/src/main/resources/hudson/model/View/index.jelly
          core/src/main/resources/lib/hudson/executors.jelly
          debian/debian/changelog
          plugins/pom.xml
          pom.xml
          test/pom.xml
          test/src/main/java/org/jvnet/hudson/test/MilliSecLogFormatter.java
          test/src/test/groovy/hudson/matrix/MatrixProjectCustomWorkspaceTest.groovy
          test/src/test/groovy/hudson/matrix/MatrixProjectTest.groovy
          test/src/test/java/hudson/model/ExecutorTest.java
          test/src/test/java/hudson/model/ProjectTest.java
          test/src/test/java/hudson/model/QueueTest.java
          test/src/test/java/hudson/tasks/ArtifactArchiverTest.java
          test/src/test/java/hudson/util/ProcessTreeKillerTest.java
          war/pom.xml
          http://jenkins-ci.org/commit/jenkins/c4e2e597b347868bb5cca35f19380a2772378413
          Log:
          Merge branch 'master' of github.com:jenkinsci/jenkins into JENKINS-18434

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Kiellor Path: changelog.html cli/pom.xml core/pom.xml core/src/main/java/hudson/cli/BuildCommand.java core/src/main/java/hudson/init/InitializerFinder.java core/src/main/java/hudson/init/TaskMethodFinder.java core/src/main/java/hudson/init/TermMilestone.java core/src/main/java/hudson/init/Terminator.java core/src/main/java/hudson/init/TerminatorFinder.java core/src/main/java/hudson/model/AllView.java core/src/main/java/hudson/model/Computer.java core/src/main/java/hudson/model/Executor.java core/src/main/java/hudson/model/OneOffExecutor.java core/src/main/java/hudson/model/Queue.java core/src/main/java/hudson/node_monitors/NodeMonitorUpdater.java core/src/main/java/hudson/slaves/NodeProvisioner.java core/src/main/java/jenkins/model/Jenkins.java core/src/main/java/jenkins/util/AtmostOneTaskExecutor.java core/src/main/resources/hudson/model/AbstractModelObject/descriptionForm.jelly core/src/main/resources/hudson/model/View/index.jelly core/src/main/resources/lib/hudson/executors.jelly debian/debian/changelog plugins/pom.xml pom.xml test/pom.xml test/src/main/java/org/jvnet/hudson/test/MilliSecLogFormatter.java test/src/test/groovy/hudson/matrix/MatrixProjectCustomWorkspaceTest.groovy test/src/test/groovy/hudson/matrix/MatrixProjectTest.groovy test/src/test/java/hudson/model/ExecutorTest.java test/src/test/java/hudson/model/ProjectTest.java test/src/test/java/hudson/model/QueueTest.java test/src/test/java/hudson/tasks/ArtifactArchiverTest.java test/src/test/java/hudson/util/ProcessTreeKillerTest.java war/pom.xml http://jenkins-ci.org/commit/jenkins/c4e2e597b347868bb5cca35f19380a2772378413 Log: Merge branch 'master' of github.com:jenkinsci/jenkins into JENKINS-18434

          Code changed in jenkins
          User: Oliver Gondža
          Path:
          core/src/main/java/hudson/model/ChoiceParameterDefinition.java
          core/src/main/resources/hudson/model/ChoiceParameterDefinition/config.jelly
          core/src/main/resources/hudson/model/Messages.properties
          core/src/test/java/hudson/model/ChoiceParameterDefinitionTest.java
          http://jenkins-ci.org/commit/jenkins/bd2a4c85d36bd8ca678ba09cbf53c728e7c3d727
          Log:
          Merge pull request #968 from akiellor/JENKINS-18434

          Compare: https://github.com/jenkinsci/jenkins/compare/8a55679823ac...bd2a4c85d36b

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oliver Gondža Path: core/src/main/java/hudson/model/ChoiceParameterDefinition.java core/src/main/resources/hudson/model/ChoiceParameterDefinition/config.jelly core/src/main/resources/hudson/model/Messages.properties core/src/test/java/hudson/model/ChoiceParameterDefinitionTest.java http://jenkins-ci.org/commit/jenkins/bd2a4c85d36bd8ca678ba09cbf53c728e7c3d727 Log: Merge pull request #968 from akiellor/ JENKINS-18434 Compare: https://github.com/jenkinsci/jenkins/compare/8a55679823ac...bd2a4c85d36b

            Unassigned Unassigned
            owenmehegan Owen Mehegan
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: