• Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Blocker Blocker
    • prioritysorter-plugin

      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
      

          [JENKINS-28230] JSONException when saving Configure System

          Closed wrong issue

          Magnus Sandberg added a comment - Closed wrong issue

          Downgrading to 2.9 let me migrate to advanced mode, and go away from LegacyMode. I then upgraded to 3.0 and I was able to save my Configure System.

          Kyrre Havik Eriksen added a comment - Downgrading to 2.9 let me migrate to advanced mode , and go away from LegacyMode . I then upgraded to 3.0 and I was able to save my Configure System .

          Great that the workaround worked for you - I will fix the core problem in next release.

          Magnus Sandberg added a comment - Great that the workaround worked for you - I will fix the core problem in next release.

          Sounds good, and thanks for the help!

          Kyrre Havik Eriksen added a comment - Sounds good, and thanks for the help!

          Daniel Beck added a comment -

          And as you are not forced to switch from LegacyMode to Advanced in 2.x declaring it incompatible will not really help.

          You'd declare 3.x incompatible with 1.x. And if the users then find out by reading the docs that it only affects the legacy configurations (and therefore not them), great.

          Daniel Beck added a comment - And as you are not forced to switch from LegacyMode to Advanced in 2.x declaring it incompatible will not really help. You'd declare 3.x incompatible with 1.x. And if the users then find out by reading the docs that it only affects the legacy configurations (and therefore not them), great.

          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.

          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.

          @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 ...

          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 ...

          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.

          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.

          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.

          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.

          Opted to just remove support for Legacy JENKINS-28359

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

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

              Created:
              Updated:
              Resolved: