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