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

JSONException saving periodicreincarnation.JobLocalConfiguration

      I originally reported this under JENKINS-20123 however @sogabe said:

      @Peter Mount
      Periodic-reincarnation-plugin causes your exception.
      You should create a new ticket.

      Here's the original report:

      I'm getting this as well, effectively causing me to be unable to save any job config. There's no GIT at all on this specific server (we use Mercurial) but again it's only occurred since 1.536 was installed.

      javax.servlet.ServletException: java.lang.RuntimeException: Failed to instantiate class org.jenkinsci.plugins.periodicreincarnation.JobLocalConfiguration from {"isEnabled":"false","maxDepth":"","isLocallyConfigured":"false"}
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:777)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
      	at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
      	at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:630)
      	at org.kohsuke.stapler.Stapler.service(Stapler.java:224)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	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 org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
      	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:76)
      	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
      	at org.eclipse.jetty.server.Server.handle(Server.java:370)
      	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
      	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
      	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
      	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
      	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
      	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
      	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
      	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
      	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.RuntimeException: Failed to instantiate class org.jenkinsci.plugins.periodicreincarnation.JobLocalConfiguration from {"isEnabled":"false","maxDepth":"","isLocallyConfigured":"false"}
      	at hudson.model.Descriptor.newInstance(Descriptor.java:578)
      	at hudson.model.JobPropertyDescriptor.newInstance(JobPropertyDescriptor.java:71)
      	at org.jenkinsci.plugins.periodicreincarnation.JobLocalConfiguration$DescriptorImpl.newInstance(JobLocalConfiguration.java:135)
      	at org.jenkinsci.plugins.periodicreincarnation.JobLocalConfiguration$DescriptorImpl.newInstance(JobLocalConfiguration.java:89)
      	at hudson.util.DescribableList.rebuild(DescribableList.java:173)
      	at hudson.model.Job.doConfigSubmit(Job.java:1129)
      	at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:787)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	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:120)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
      	... 67 more
      Caused by: net.sf.json.JSONException: JSONObject["isLocallyConfigured"] is not a JSONObject.
      	at net.sf.json.JSONObject.getJSONObject(JSONObject.java:2006)
      	at org.jenkinsci.plugins.periodicreincarnation.JobLocalConfiguration$DescriptorImpl.newInstance(JobLocalConfiguration.java:123)
      	at org.jenkinsci.plugins.periodicreincarnation.JobLocalConfiguration$DescriptorImpl.newInstance(JobLocalConfiguration.java:89)
      	at hudson.model.Descriptor$1.instantiate(Descriptor.java:1046)
      	at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:665)
      	at org.kohsuke.stapler.RequestImpl.access$100(RequestImpl.java:81)
      	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:587)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
      	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:396)
      	at hudson.model.Descriptor.newInstance(Descriptor.java:569)
      	... 83 more
      

          [JENKINS-20205] JSONException saving periodicreincarnation.JobLocalConfiguration

          Yordan Boev added a comment -

          I removed the newInstance method and left just the @DataBoundConstructor but the problem is still there(version 1.538). Anything I have missed on the discussion? Is there a fix already?

          Yordan Boev added a comment - I removed the newInstance method and left just the @DataBoundConstructor but the problem is still there(version 1.538). Anything I have missed on the discussion? Is there a fix already?

          Yordan Boev added a comment -

          I am using an optionalBlock in my configuration which does not seem to work with the DataBoundConstructor that well. If I have the optional parameter in the DataBoundConstructor then error while saving the configuration, if i remove it then a proper Constructor is found but the values are not saved(possibly because of the optionalBlock). Any ideas?

          Yordan Boev added a comment - I am using an optionalBlock in my configuration which does not seem to work with the DataBoundConstructor that well. If I have the optional parameter in the DataBoundConstructor then error while saving the configuration, if i remove it then a proper Constructor is found but the values are not saved(possibly because of the optionalBlock). Any ideas?

          Yordan Boev added a comment -

          I don't seem to be able to create a DataBoundConstructor for this jelly file:
          https://github.com/jenkinsci/periodic-reincarnation-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/periodicreincarnation/JobLocalConfiguration/config.jelly
          With the newInstance method I was passing a JSON object and looking what is in it(generally 1 value if the optional block is set to false and 3 values if the optional block is true). I cannot do that with the DataBoundConstructor or at least do not know how.

          Yordan Boev added a comment - I don't seem to be able to create a DataBoundConstructor for this jelly file: https://github.com/jenkinsci/periodic-reincarnation-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/periodicreincarnation/JobLocalConfiguration/config.jelly With the newInstance method I was passing a JSON object and looking what is in it(generally 1 value if the optional block is set to false and 3 values if the optional block is true). I cannot do that with the DataBoundConstructor or at least do not know how.

          Yordan Boev added a comment -

          Fixed, will be included in the next version. This helped a lot to make the optionalBlock thing work: http://stackoverflow.com/questions/13024929/how-to-use-optionalblock-in-build-steps-config-jelly

          Yordan Boev added a comment - Fixed, will be included in the next version. This helped a lot to make the optionalBlock thing work: http://stackoverflow.com/questions/13024929/how-to-use-optionalblock-in-build-steps-config-jelly

          Yordan Boev added a comment -

          Local configuration was completely disabled in 1.7 as a workaround, now fixed and reenabled.

          Yordan Boev added a comment - Local configuration was completely disabled in 1.7 as a workaround, now fixed and reenabled.

            boev Yordan Boev
            pmount Peter Mount
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: