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

Failed to write defaultParameterValue: IAE from ExtensibleChoiceParameterDefinition.createValueCommon

    • arctic, tasman, tethys

      Context
      If a plugin’s Action fails to serialize it fails the serialization of the rest response. Just like the remote APIs, Blue Ocean returns serialized Actions for many of its responses.

      For Blue Ocean this is incredibly important as a failed REST call can cause the entire UI to fail and the blame is assigned to Blue Ocean rather than the plugin that threw the exception. There are thousands of plugins and 1000s of ways to make the UI fall over.

      In Scope

      • If an Actions property fails to serialize then the serialized action should not be visible in the response
        • Could we return the error somehow without failing the whole request? We might want to let the user know if we cant render that action (e.g. Test screen shouldn't look like there are no tests if the action breaks)
      • When serialization failure occurs, the stack trace is logged along with the identity of the plugin providing the action and a link to its wiki page explaining how to file a bug.

      Original request
      Getting a 500 error when attempting to hit the blue/rest service with Multibranch Pipeline. Looks like it might be an issue with Extensible Choice Paramater plugin.

      java.io.IOException: Failed to write defaultParameterValue
      	at org.kohsuke.stapler.export.Property.safeGetValue(Property.java:151)
      	at org.kohsuke.stapler.export.Property.writeTo(Property.java:126)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:227)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:223)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:223)
      	at org.kohsuke.stapler.export.Property.writeValue(Property.java:279)
      	at org.kohsuke.stapler.export.Property.writeValue(Property.java:222)
      	at org.kohsuke.stapler.export.Property.writeValue(Property.java:168)
      	at org.kohsuke.stapler.export.Property.writeTo(Property.java:139)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:227)
      	at org.kohsuke.stapler.export.Property.writeTo(Property.java:135)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:227)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:223)
      	at org.kohsuke.stapler.export.Property.writeValue(Property.java:279)
      	at org.kohsuke.stapler.export.Property.writeValue(Property.java:222)
      	at org.kohsuke.stapler.export.Property.writeValue(Property.java:168)
      	at org.kohsuke.stapler.export.Property.writeTo(Property.java:139)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:227)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:223)
      	at org.kohsuke.stapler.export.Model.writeTo(Model.java:198)
      	at org.kohsuke.stapler.ResponseImpl.writeOne(ResponseImpl.java:285)
      	at org.kohsuke.stapler.ResponseImpl.serveExposedBean(ResponseImpl.java:273)
      	at hudson.model.Api.doJson(Api.java:211)
      	at io.jenkins.blueocean.rest.pageable.PagedResponse$Processor$1.generateResponse(PagedResponse.java:63)
      	at org.kohsuke.stapler.HttpResponseRenderer$Default.handleHttpResponse(HttpResponseRenderer.java:124)
      	at org.kohsuke.stapler.HttpResponseRenderer$Default.generateResponse(HttpResponseRenderer.java:69)
      	at org.kohsuke.stapler.Function.renderResponse(Function.java:119)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:102)
      	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$11.dispatch(MetaClass.java:380)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:686)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$11.dispatch(MetaClass.java:380)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	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:790)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
      	at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:206)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:95)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	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:171)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      	at org.eclipse.jetty.server.Server.handle(Server.java:499)
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
      	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
      	at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      	at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.reflect.InvocationTargetException
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:66)
      	at org.kohsuke.stapler.export.Property.safeGetValue(Property.java:145)
      	... 102 more
      Caused by: java.lang.IllegalArgumentException: Illegal choice: 
      	at jp.ikedam.jenkins.plugins.extensible_choice_parameter.ExtensibleChoiceParameterDefinition.createValueCommon(ExtensibleChoiceParameterDefinition.java:397)
      	at jp.ikedam.jenkins.plugins.extensible_choice_parameter.ExtensibleChoiceParameterDefinition.createValue(ExtensibleChoiceParameterDefinition.java:430)
      	at jp.ikedam.jenkins.plugins.extensible_choice_parameter.ExtensibleChoiceParameterDefinition.getDefaultParameterValue(ExtensibleChoiceParameterDefinition.java:450)
      	... 108 more
      

          [JENKINS-39647] Failed to write defaultParameterValue: IAE from ExtensibleChoiceParameterDefinition.createValueCommon

          Sterling Heibeck added a comment - - edited

          In case it's still important, I'm attaching a full log file where the error was reproduced. I wasn't sure what was all needed, so I'm including the full file. jenkins.err.log

          Latest error is around line 22795.

          Ah, I also just discovered the following which may shed some light on the issue: Choice Provider is set to 'System Groovy Choice Parameter' and the Default value was set to "<Top Most Option>". If I change the default value to another selection, the error goes away.

          Sterling Heibeck added a comment - - edited In case it's still important, I'm attaching a full log file where the error was reproduced. I wasn't sure what was all needed, so I'm including the full file. jenkins.err.log Latest error is around line 22795. Ah, I also just discovered the following which may shed some light on the issue: Choice Provider is set to 'System Groovy Choice Parameter' and the Default value was set to "<Top Most Option>". If I change the default value to another selection, the error goes away.

          James Dumay added a comment -

          sheibeck unrelated - looks like you need to increase your servers permgen BTW java.lang.OutOfMemoryError: PermGen space

          James Dumay added a comment - sheibeck unrelated - looks like you need to increase your servers permgen BTW java.lang.OutOfMemoryError: PermGen space

          James Dumay added a comment -

          sheibeck ahh thanks for that. I think we're going to not serialize invalid actions as part of JENKINS-40088. This problem shouldn't happen in the future.

          James Dumay added a comment - sheibeck ahh thanks for that. I think we're going to not serialize invalid actions as part of JENKINS-40088 . This problem shouldn't happen in the future.

          Thanks! And yes, that PermaGen error has been my been. I'm in a windows environment and I have a ton of jobs and the thing keeps running into that issue. I'm working on moving everything over to pipelines, which hopefully will fix that!

          Sterling Heibeck added a comment - Thanks! And yes, that PermaGen error has been my been. I'm in a windows environment and I have a ton of jobs and the thing keeps running into that issue. I'm working on moving everything over to pipelines, which hopefully will fix that!

          Michael Neale added a comment -

          Has the anaysis core plugin been fixed so it can serialize?

          Michael Neale added a comment - Has the anaysis core plugin been fixed so it can serialize?

          James Dumay added a comment -

          michaelneale yes its fixed. There are others like the multi choice param plugin that barf. Any plugin could do this and bring the whole stack of cards down.

          James Dumay added a comment - michaelneale yes its fixed. There are others like the multi choice param plugin that barf. Any plugin could do this and bring the whole stack of cards down.

          Jesse Glick added a comment -

          I am filing this under the plugin actually causing the error here, since it seems JENKINS-40088 is tracking the response to the error already.

          Jesse Glick added a comment - I am filing this under the plugin actually causing the error here, since it seems JENKINS-40088 is tracking the response to the error already.

          Code changed in jenkins
          User: ikedam
          Path:
          src/main/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/ExtensibleChoiceParameterDefinition.java
          src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/ExtensibleChoiceParameterDefinitionJenkinsTest.java
          http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/535d9d79337948fbbbefabb9189aad2d67cdd53d
          Log:
          [FIXED JENKINS-39647] `getDefaultParameterValue` should not fail

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: ikedam Path: src/main/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/ExtensibleChoiceParameterDefinition.java src/test/java/jp/ikedam/jenkins/plugins/extensible_choice_parameter/ExtensibleChoiceParameterDefinitionJenkinsTest.java http://jenkins-ci.org/commit/extensible-choice-parameter-plugin/535d9d79337948fbbbefabb9189aad2d67cdd53d Log: [FIXED JENKINS-39647] `getDefaultParameterValue` should not fail

          ikedam added a comment -

          Fixed in extensible-choice 1.3.4.
          It will be available in the update center in a day.
          Please try that.

          ikedam added a comment - Fixed in extensible-choice 1.3.4. It will be available in the update center in a day. Please try that.

          James Dumay added a comment -

          Nice one! Thanks

          James Dumay added a comment - Nice one! Thanks

            sheibeck Sterling Heibeck
            sheibeck Sterling Heibeck
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: