-
Notifications
You must be signed in to change notification settings - Fork 742
Closed
Description
Your checklist for this issue
🚨 Please review the guidelines for contributing to this repository.
-
Jenkins version
-
Plugin version
-
OS
Description
- Jenkins Version: 2.164.1
- CASC Version: 1.11
Attempting to export the current configuration from the CASC Plugin Landing Page leads to YAML file that looks like the following (abridged):
jenkins:
agentProtocols:
- "JNLP4-connect"
- "Ping"
authorizationStrategy:
globalMatrix:
grantedPermissions:
- "Permission[class hudson.model.Hudson,Administer]:anonymous"
disableRememberMe: false
markupFormatter: "FAILED TO EXPORT hudson.model.Hudson#markupFormatter: \njava.lang.NullPointerException\n\
\tat io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.lambda$describe$4(HeteroDescribableConfigurator.java:99)\n\
\tat io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.lambda$describe$6(HeteroDescribableConfigurator.java:103)\n\
\tat io.vavr.control.Option.map(Option.java:373)\n\tat io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.describe(HeteroDescribableConfigurator.java:102)\n\
\tat io.jenkins.plugins.casc.impl.configurators.HeteroDescribableConfigurator.describe(HeteroDescribableConfigurator.java:50)\n\
\tat io.jenkins.plugins.casc.Attribute.describe(Attribute.java:195)\n\tat io.jenkins.plugins.casc.Configurator.describe(Configurator.java:162)\n\
\tat io.jenkins.plugins.casc.ConfigurationAsCode.export(ConfigurationAsCode.java:403)\n\
\tat io.jenkins.plugins.casc.ConfigurationAsCode.doExport(ConfigurationAsCode.java:393)\n\
\tat java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n\
\tat org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)\n\t\
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)\n\t\
at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77)\n\
\tat org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)\n\
\tat org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)\n\tat org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)\n\
\tat org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:537)\n\tat org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)\n\
\tat org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)\n\tat org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)\n\
\tat org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:458)\n\tat org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)\n\
\tat org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)\n\tat org.kohsuke.stapler.Stapler.invoke(Stapler.java:668)\n\
\tat org.kohsuke.stapler.Stapler.service(Stapler.java:238)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\
\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)\n\t\
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)\n\
\tat hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)\n\
\tat jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)\n\tat\
\ hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)\n\t\
at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128)\n\
\tat hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)\n\
\tat hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)\n\t\
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\
\tat hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:64)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)\n\
\tat hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)\n\
\tat hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\
\tat org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)\n\
\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\
\tat hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)\n\
\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\
\tat org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)\n\
\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\
\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)\n\
\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)\n\
\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\
\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\n\
\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\n\
\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)\n\
\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\n\
\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\
\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\
\tat org.eclipse.jetty.server.Server.handle(Server.java:503)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)\n\
\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n\
\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\n\
\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:411)\n\
\tat org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:305)\n\
\tat org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)\n\
\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n\
\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n\
\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)\n\
\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)\n\
\tat java.lang.Thread.run(Thread.java:748)\n"
mode: NORMAL
This seems to be the result of the commit:
Specifically it suppressed the unchecked warning, even though DataBoundConfigurator::describe definitely can and does return null.
I believe that null filtering might be sufficient here, but would look to guidance as to what is the actually correct solution.
Metadata
Metadata
Assignees
Labels
No labels