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

Null pointer exception saving a parameterized freestyle job with no parameters defined

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Using Jenkins 2.60.3, I see a null pointer exception when trying to save a parameterized job which has no parameters defined.

      Steps I take:

      1. Create a new freestyle job
      2. Click the checkbox "This job is parameterized"
      3. Click the "Save" button

      Stack trace:

      java.lang.NullPointerException: ParameterDefinitions is null when this is a not valid value
      	at hudson.model.ParametersDefinitionProperty.<init>(ParametersDefinitionProperty.java:75)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      	at org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:529)
      	at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:783)
      	at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:678)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
      	at hudson.model.Descriptor.newInstance(Descriptor.java:592)
      Caused: java.lang.Error: Failed to instantiate class hudson.model.ParametersDefinitionProperty from {"specified":true}
      	at hudson.model.Descriptor.newInstance(Descriptor.java:600)
      	at hudson.model.JobPropertyDescriptor.newInstance(JobPropertyDescriptor.java:72)
      	at jenkins.model.OptionalJobProperty$OptionalJobPropertyDescriptor.newInstance(OptionalJobProperty.java:56)
      	at hudson.model.ParametersDefinitionProperty$DescriptorImpl.newInstance(ParametersDefinitionProperty.java:226)
      	at hudson.model.ParametersDefinitionProperty$DescriptorImpl.newInstance(ParametersDefinitionProperty.java:221)
      	at hudson.util.DescribableList.rebuild(DescribableList.java:177)
      	at hudson.model.Job.doConfigSubmit(Job.java:1305)
      	at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:792)
      	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
      	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)
      	at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52)
      	at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117)
      	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      Caused: javax.servlet.ServletException
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:765)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      	at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      	at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
      	at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
      	at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:225)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:51)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at com.cloudbees.jenkins.support.slowrequest.SlowRequestFilter.doFilter(SlowRequestFilter.java:37)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:232)
      	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:209)
      	at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:88)
      	at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:113)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:138)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	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 jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
      	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 jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:92)
      	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:90)
      	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      	at org.eclipse.jetty.server.Server.handle(Server.java:499)
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
      	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
      	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      	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:748)
      

      Work arounds:

      1. Add a parameter to the job
      2. Uncheck the checkbox for "This job is parameterized"

        Attachments

          Issue Links

            Activity

            Hide
            danielbeck Daniel Beck added a comment -

            This is weird. Andrew Bayer resolved JENKINS-37590 towards 2.46.

            Show
            danielbeck Daniel Beck added a comment - This is weird. Andrew Bayer resolved JENKINS-37590 towards 2.46.
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            The fix in JENKINS-37590 was incorrect: https://github.com/jenkinsci/jenkins/pull/2723/files
            In the fix Andrew Bayer invokes "ParametersDefinitionProperty prop = (ParametersDefinitionProperty)super.newInstance(req, formData);" for the submitted form, and this method just fails with the same NPE as before the override.

            My proposal would be to just replace the NPE throwing by assigning an empty array. Ideally we also need to fix forms to prevent sending null at all.

            Show
            oleg_nenashev Oleg Nenashev added a comment - The fix in JENKINS-37590 was incorrect: https://github.com/jenkinsci/jenkins/pull/2723/files In the fix Andrew Bayer invokes "ParametersDefinitionProperty prop = (ParametersDefinitionProperty)super.newInstance(req, formData);" for the submitted form, and this method just fails with the same NPE as before the override. My proposal would be to just replace the NPE throwing by assigning an empty array. Ideally we also need to fix forms to prevent sending null at all.
            Hide
            ks_nenasheva Kseniia Nenasheva added a comment -
            Show
            ks_nenasheva Kseniia Nenasheva added a comment - PR #3300
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Kseniia Nenasheva
            Path:
            core/src/main/java/hudson/model/ParametersDefinitionProperty.java
            http://jenkins-ci.org/commit/jenkins/02d6908ada70fcf8012833ddef628bc09c6f8389
            Log:
            JENKINS-46638 - Null pointer exception saving a parameterized freestyle job with no parameters defined (#3300)

            • delete NPEs
            • address comments
            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kseniia Nenasheva Path: core/src/main/java/hudson/model/ParametersDefinitionProperty.java http://jenkins-ci.org/commit/jenkins/02d6908ada70fcf8012833ddef628bc09c6f8389 Log: JENKINS-46638 - Null pointer exception saving a parameterized freestyle job with no parameters defined (#3300) delete NPEs address comments
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            Fixed in 2.109

            Show
            oleg_nenashev Oleg Nenashev added a comment - Fixed in 2.109

              People

              • Assignee:
                ks_nenasheva Kseniia Nenasheva
                Reporter:
                markewaite Mark Waite
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: