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

NPE from RunParameterDefinition.getDefaultParameterValue getting /job/{jobname}/api/python w/ "run" parameter for nonexistent project

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • core
    • This is on LTS 1.509.4, but confirmed same behavior on the latest.

      When I have a run param that uses a project that does not exist, the api throws a 500 error. The UI has no problem requesting the job, loading the job config page, and letting me configure. Its only via the api/python that this happens.

      I get the below trace. If I remove the run param, or change it to an existent project, this doesn't happen. This probably shouldn't 500, but maybe throw a warning if anything.

      Below I created a project job1 that uses job3 as a run param. Then deleted job3.

      ~ $ curl -v http://162.243.140.39:8080/job/job1/api/python/

      • About to connect() to 162.243.140.39 port 8080 (#0)
      • Trying 162.243.140.39...
      • connected
      • Connected to 162.243.140.39 (162.243.140.39) port 8080 (#0)
        > GET /job/job1/api/python/ HTTP/1.1
        > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
        > Host: 162.243.140.39:8080
        > Accept: /
        >
        < HTTP/1.1 500 Internal Server Error
        < Server: Winstone Servlet Engine v0.9.10
        < X-Jenkins: 1.509.4
        < X-Jenkins-Session: 99f106b7
        < Content-Type: text/html;charset=UTF-8
        < Content-Length: 6271
        < Connection: Keep-Alive
        < Date: Mon, 21 Oct 2013 22:55:26 GMT
        < X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
        <
        {"actions":[{"parameterDefinitions":[{"defaultParameterValue":<html><head><title>Error 500</title></head>
        <body bgcolor=#fff><h1>Status Code: 500</h1>Exception: Failed to write defaultParameterValue<br>Stacktrace: <pre>java.io.IOException: Failed to write defaultParameterValue
        at org.kohsuke.stapler.export.Property.writeTo(Property.java:120)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:187)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Property.writeValue(Property.java:232)
        at org.kohsuke.stapler.export.Property.writeValue(Property.java:182)
        at org.kohsuke.stapler.export.Property.writeValue(Property.java:137)
        at org.kohsuke.stapler.export.Property.writeTo(Property.java:114)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:187)
        at org.kohsuke.stapler.export.Property.writeValue(Property.java:232)
        at org.kohsuke.stapler.export.Property.writeValue(Property.java:182)
        at org.kohsuke.stapler.export.Property.writeValue(Property.java:137)
        at org.kohsuke.stapler.export.Property.writeTo(Property.java:114)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:187)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:182)
        at org.kohsuke.stapler.export.Model.writeTo(Model.java:154)
        at org.kohsuke.stapler.ResponseImpl.serveExposedBean(ResponseImpl.java:267)
        at hudson.model.Api.doPython(Api.java:204)
        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:616)
        at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:297)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:160)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:95)
        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:685)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
        at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:201)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
        at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:587)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:218)
        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: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.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:46)
        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:1146)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:679)
        Caused by: java.lang.reflect.InvocationTargetException
        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:616)
        at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:66)
        at org.kohsuke.stapler.export.Property.writeTo(Property.java:114)
        ... 74 more
        Caused by: java.lang.NullPointerException
        at hudson.model.RunParameterDefinition.getDefaultParameterValue(RunParameterDefinition.java:101)
        ... 80 more
        </pre><br><hr>
      • Connection #0 to host 162.243.140.39 left intact
        <i>Generated by Stapler at Mon Oct 21 22:55:26 UTC 2013</i></body></html>* Closing connection #0

      I add job3, and all good.

      ~ $ curl -v http://162.243.140.39:8080/job/job1/api/python/

      • About to connect() to 162.243.140.39 port 8080 (#0)
      • Trying 162.243.140.39...
      • connected
      • Connected to 162.243.140.39 (162.243.140.39) port 8080 (#0)
        > GET /job/job1/api/python/ HTTP/1.1
        > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
        > Host: 162.243.140.39:8080
        > Accept: /
        >
        < HTTP/1.1 200 OK
        < Server: Winstone Servlet Engine v0.9.10
        < X-Jenkins: 1.509.4
        < X-Jenkins-Session: 99f106b7
        < Content-Type: text/x-python;charset=UTF-8
        < Content-Length: 847
        < Connection: Keep-Alive
        < Date: Mon, 21 Oct 2013 22:56:20 GMT
        < X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
        <
      • Connection #0 to host 162.243.140.39 left intact
        {"actions":[
        Unknown macro: {"parameterDefinitions"}

        ],"description":"","displayName":"job1","displayNameOrNull":None,"name":"job1","url":"http://162.243.140.39:8080/job/job1/","buildable":True,"builds":[],"color":"grey","firstBuild":None,"healthReport":[],"inQueue":False,"keepDependencies":False,"lastBuild":None,"lastCompletedBuild":None,"lastFailedBuild":None,"lastStableBuild":None,"lastSuccessfulBuild":None,"lastUnstableBuild":None,"lastUnsuccessfulBuild":None,"nextBuildNumber":1,"property":[

        Unknown macro: {"parameterDefinitions"}

        ],"queueItem":None,"concurrentBuild":False,"downstreamProjects":[],"scm":{},"upstreamProjects":[]}* Closing connection #0

            Unassigned Unassigned
            makewhatis David Johansen
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: