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

JSONException when saving Configure System

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Blocker
    • Resolution: Won't Fix
    • Component/s: prioritysorter-plugin
    • Labels:
    • Environment:
    • Similar Issues:

      Description

      After updating to Priority Sorter Plugin 3.0 whenever I try to save my Configure System I get the following error/stacktrace.

      It seems that it is running with LegacyMode == true, which may be true as I did nothing before I upgraded to 3.0 from 2.9.

      javax.servlet.ServletException: net.sf.json.JSONException: JSONObject["advanced"] is not a Boolean.
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
      	at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
      	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.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198)
      	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176)
      	at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:85)
      	at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:99)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      	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 jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
      	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:1482)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	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.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      
      Caused by: net.sf.json.JSONException: JSONObject["advanced"] is not a Boolean.
      	at net.sf.json.JSONObject.getBoolean(JSONObject.java:1929)
      	at jenkins.advancedqueue.PrioritySorterConfiguration.configure(PrioritySorterConfiguration.java:105)
      	at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2915)
      	at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2878)
      	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:606)
      	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
      	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	... 66 more
      

        Attachments

          Activity

          Hide
          kyrremann Kyrre Havik Eriksen added a comment -

          Something that could help, if possible, is to declare that upgrading to 3.x will force you over till Advanced, thus losing your Legacy configurations. Which was something I thought/hoped for.

          Show
          kyrremann Kyrre Havik Eriksen added a comment - Something that could help, if possible, is to declare that upgrading to 3.x will force you over till Advanced, thus losing your Legacy configurations. Which was something I thought/hoped for.
          Hide
          emsa23 Magnus Sandberg added a comment -

          @Daniel, I have pondered on this or quite some time and I also considered this already for the 2.x releases

          As it works you will have exactly the same issue going from 2.x to 3.x so the only thing to do is to make it only compatible with itself and I really didn't wanted to go there. Sure you can use this just to make people look at the docs.

          @Kyrre, yes I considered this as well but it is very intrusive.

          What would be good if it was possible to collect more information about how the plugin is used from actual Jenkins installations.
          It would also be good if beta releases was easier to access for users ...

          Show
          emsa23 Magnus Sandberg added a comment - @Daniel, I have pondered on this or quite some time and I also considered this already for the 2.x releases As it works you will have exactly the same issue going from 2.x to 3.x so the only thing to do is to make it only compatible with itself and I really didn't wanted to go there. Sure you can use this just to make people look at the docs. @Kyrre, yes I considered this as well but it is very intrusive. What would be good if it was possible to collect more information about how the plugin is used from actual Jenkins installations. It would also be good if beta releases was easier to access for users ...
          Hide
          danielbeck Daniel Beck added a comment -

          Jenkins will show a compatibility warning like the following (older versions have a different message) in plugin manager:

          Warning: the new version of this plugin claims to use a different settings format than the installed version. Jobs using this plugin may need to be reconfigured, and/or you may not be able to cleanly revert to the prior version without manually restoring old settings. Consult the plugin release notes for details.

          A warning for 1.x (compatibleSince 2.0) would be a good idea in any case IMO – users upgrading from that will never have a good experience, right?

          For 2.x (compatibleSince 3.0) should also be considered, to be on the safe side. Just document on the wiki page that this only affects legacy configs, for which support was dropped, and it should be clear.

          Show
          danielbeck Daniel Beck added a comment - Jenkins will show a compatibility warning like the following (older versions have a different message) in plugin manager: Warning: the new version of this plugin claims to use a different settings format than the installed version. Jobs using this plugin may need to be reconfigured, and/or you may not be able to cleanly revert to the prior version without manually restoring old settings. Consult the plugin release notes for details. A warning for 1.x (compatibleSince 2.0) would be a good idea in any case IMO – users upgrading from that will never have a good experience, right? For 2.x (compatibleSince 3.0) should also be considered, to be on the safe side. Just document on the wiki page that this only affects legacy configs, for which support was dropped, and it should be clear.
          Hide
          danielbeck Daniel Beck added a comment -

          Sure you can use this just to make people look at the docs.

          Exactly. That it only affects some users in this plugin is unfortunate (otherwise it would be pretty clear I think), but scaring the others for the few seconds until the docs tell them they're not affected is a small price compared to breaking user installs IMO.

          Show
          danielbeck Daniel Beck added a comment - Sure you can use this just to make people look at the docs. Exactly. That it only affects some users in this plugin is unfortunate (otherwise it would be pretty clear I think), but scaring the others for the few seconds until the docs tell them they're not affected is a small price compared to breaking user installs IMO.
          Hide
          emsa23 Magnus Sandberg added a comment -

          Opted to just remove support for Legacy JENKINS-28359

          Show
          emsa23 Magnus Sandberg added a comment - Opted to just remove support for Legacy JENKINS-28359

            People

            Assignee:
            emsa23 Magnus Sandberg
            Reporter:
            kyrremann Kyrre Havik Eriksen
            Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: