Details
-
Bug
-
Status: Closed (View Workflow)
-
Blocker
-
Resolution: Fixed
-
None
-
n/a
Description
When the html5-notifier plugin is enabled, you cannot save a job with more than one build step. To reproduce, install the plugin and add a new job with two windows batch file or shell script build steps. If only one is created, it will save, but if two are created, you will see an error like the following:
Failed to parse form data. Please report this problem as a bug
JSON={"":"","builder":"\"[
,
{\"command\":\"cd foo\",\"stapler-class\":\"hudson.tasks.Shell\",\"kind\":\"hudson.tasks.Shell\"}]\"","description":"","hasSlaveAffinity":
{"assignedLabelString":"windows&&expander"},"name":"debug_job2","properties":{"hudson-model-ParametersDefinitionProperty":{},"hudson-plugins-batch_task-BatchTaskProperty":{},"stapler-class-bag":"true"},"scm":{"value":"3"}}
net.sf.json.JSONException: A JSONArray text must start with '[' at character 1 of "[
{"command":"cd bar","stapler-class":"hudson.tasks.Shell","kind":"hudson.tasks.Shell"},
{"command":"cd foo","stapler-class":"hudson.tasks.Shell","kind":"hudson.tasks.Shell"}]"
at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:512)
at net.sf.json.JSONArray._fromJSONTokener(JSONArray.java:903)
at net.sf.json.JSONArray._fromString(JSONArray.java:983)
at net.sf.json.JSONArray.fromObject(JSONArray.java:141)
at net.sf.json.JSONArray.fromObject(JSONArray.java:120)
at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:863)
at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:853)
at hudson.util.DescribableList.rebuildHetero(DescribableList.java:185)
at hudson.model.Project.submit(Project.java:197)
at hudson.model.Job.doConfigSubmit(Job.java:966)
at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:643)
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:282)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:88)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:104)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:234)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
at org.kohsuke.stapler.Stapler.service(Stapler.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
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:61)
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:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
at java.lang.Thread.run(Thread.java:636)
I think the problem is the \" at the start that's inserted there...
Workaround is to uninstall the plugin.
Attachments
Issue Links
- is duplicated by
-
JENKINS-11611 JSON Error on configSubmit (when slave server and multiple build steps)
-
- Resolved
-
- is related to
-
JENKINS-15526 toJSON broken: [JENKINS-11618] reintroduced a bug fixed by prototypejs 1.7
-
- Open
-
Code changed in jenkins
User: Kohsuke Kawaguchi
Path:
war/src/main/webapp/scripts/prototype.js
http://jenkins-ci.org/commit/jenkins/34e8117a64ce94a7e5da35be3bc3b077de16e1b2
Log:
JENKINS-11618Adding back the 'toJSON' instance method.This change, in parallel to a fix in stapler bind.js, would maximize the
backward compatibility.