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

Failed to write defaultParameterValue: IAE from ExtensibleChoiceParameterDefinition.createValueCommon

    XMLWordPrintable

Details

    • arctic, tasman, tethys

    Description

      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
      

      Attachments

        Issue Links

          Activity

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

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

            jglick 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_issue_link 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 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 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.
            jamesdumay James Dumay added a comment -

            Nice one! Thanks

            jamesdumay James Dumay added a comment - Nice one! Thanks

            People

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

              Dates

                Created:
                Updated:
                Resolved: