[ https://issues.jenkins-ci.org/browse/JENKINS-11618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=159736#comment-159736 ]
SCM/JIRA link daemon commented on JENKINS-11618: ------------------------------------------------ Code changed in jenkins User: Kohsuke Kawaguchi Path: war/src/main/webapp/scripts/prototype.js http://jenkins-ci.org/commit/jenkins/794cc76676863233f4dd1897c4b2ef7810a927bd Log: [JENKINS-11618] backporting the fix here. I actually applied the diff from 6904bb61e31595b70260840937114e79a646da5d in keyboard-shortcuts-plugin > Prototype 1.7 is missing the instance 'toJSON' method > ----------------------------------------------------- > > Key: JENKINS-11618 > URL: https://issues.jenkins-ci.org/browse/JENKINS-11618 > Project: Jenkins > Issue Type: Bug > Components: html5-notifier > Affects Versions: current > Environment: n/a > Reporter: Dan Savilonis > Assignee: jieryn > Priority: Blocker > > 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\":\"bar\",\"stapler-class\":\"hudson.tasks.Shell\",\"kind\":\"hudson.tasks.Shell\"}, > {\"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. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira