Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build against core PR with ee9 #163

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

daniel-beck
Copy link
Member

Testing done

Submitter checklist

  • Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
  • Ensure that the pull request title represents the desired changelog entry
  • Please describe what you did
  • Link to relevant issues in GitHub or Jira
  • Link to relevant pull requests, esp. upstream and downstream changes
  • Ensure you have provided tests - that demonstrates feature works or fixes the issue

@daniel-beck
Copy link
Member Author

The second commit in this PR fails with this stack trace when debugging:

java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "entries" is null
        at org.jenkinsci.plugins.matrixauth.AuthorizationProperty.setEntries(AuthorizationProperty.java:101)
        at com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty.<init>(AuthorizationMatrixProperty.java:118)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
        at org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:673)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:990)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:861)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:620)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:615)
        at hudson.model.Descriptor.bindJSON(Descriptor.java:656)
        at hudson.model.Descriptor.newInstanceImpl(Descriptor.java:614)
Caused: java.lang.LinkageError: Failed to instantiate class com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty from {"useProjectSecurity":{"":"0","inheritanceStrategy":{"stapler-class":"org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy","$class":"org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"},"data":{"USER:anonymous":{"com.cloudbees.plugins.credentials.CredentialsProvider.Create":false,"com.cloudbees.plugins.credentials.CredentialsProvider.Delete":false,"com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains":false,"com.cloudbees.plugins.credentials.CredentialsProvider.Update":false,"com.cloudbees.plugins.credentials.CredentialsProvider.View":false,"hudson.model.Item.Build":false,"hudson.model.Item.Cancel":false,"hudson.model.Item.Configure":false,"hudson.model.Item.Create":false,"hudson.model.Item.Delete":false,"hudson.model.Item.Discover":false,"hudson.model.Item.Move":false,"hudson.model.Item.Read":false,"hudson.model.Item.Workspace":false,"hudson.model.Run.Delete":false,"hudson.model.Run.Replay":false,"hudson.model.Run.Update":false,"hudson.model.View.Configure":false,"hudson.model.View.Create":false,"hudson.model.View.Delete":false,"hudson.model.View.Read":false,"hudson.scm.SCM.Tag":false},"GROUP:authenticated":{"com.cloudbees.plugins.credentials.CredentialsProvider.Create":false,"com.cloudbees.plugins.credentials.CredentialsProvider.Delete":false,"com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains":false,"com.cloudbees.plugins.credentials.CredentialsProvider.Update":false,"com.cloudbees.plugins.credentials.CredentialsProvider.View":false,"hudson.model.Item.Build":false,"hudson.model.Item.Cancel":false,"hudson.model.Item.Configure":false,"hudson.model.Item.Create":false,"hudson.model.Item.Delete":false,"hudson.model.Item.Discover":false,"hudson.model.Item.Move":false,"hudson.model.Item.Read":false,"hudson.model.Item.Workspace":false,"hudson.model.Run.Delete":false,"hudson.model.Run.Replay":false,"hudson.model.Run.Update":false,"hudson.model.View.Configure":true,"hudson.model.View.Create":true,"hudson.model.View.Delete":true,"hudson.model.View.Read":true,"hudson.scm.SCM.Tag":false},"__unused__":{"com.cloudbees.plugins.credentials.CredentialsProvider.Create":false,"com.cloudbees.plugins.credentials.CredentialsProvider.Delete":false,"com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains":false,"com.cloudbees.plugins.credentials.CredentialsProvider.Update":false,"com.cloudbees.plugins.credentials.CredentialsProvider.View":false,"hudson.model.Item.Build":false,"hudson.model.Item.Cancel":false,"hudson.model.Item.Configure":false,"hudson.model.Item.Create":false,"hudson.model.Item.Delete":false,"hudson.model.Item.Discover":false,"hudson.model.Item.Move":false,"hudson.model.Item.Read":false,"hudson.model.Item.Workspace":false,"hudson.model.Run.Delete":false,"hudson.model.Run.Replay":false,"hudson.model.Run.Update":false,"hudson.model.View.Configure":false,"hudson.model.View.Create":false,"hudson.model.View.Delete":false,"hudson.model.View.Read":false,"hudson.scm.SCM.Tag":false}}}}
        at hudson.model.Descriptor.newInstanceImpl(Descriptor.java:620)
        at hudson.model.Descriptor.newInstance(Descriptor.java:598)
        at com.cloudbees.hudson.plugins.folder.AbstractFolderPropertyDescriptor.newInstance(AbstractFolderPropertyDescriptor.java:55)
        at com.cloudbees.hudson.plugins.folder.AbstractFolderProperty.reconfigure(AbstractFolderProperty.java:93)
        at com.cloudbees.hudson.plugins.folder.AbstractFolderProperty.reconfigure(AbstractFolderProperty.java:47)
        at hudson.model.ReconfigurableDescribable.reconfigure(ReconfigurableDescribable.java:88)
        at hudson.util.DescribableList.rebuild(DescribableList.java:182)
        at hudson.util.DescribableList.rebuild(DescribableList.java:202)
        at com.cloudbees.hudson.plugins.folder.AbstractFolder.doConfigSubmit(AbstractFolder.java:1356)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
        at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:484)
        at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:497)
        at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:79)
        at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:218)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:140)
        at org.kohsuke.stapler.MetaClass$12.doDispatch(MetaClass.java:686)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:61)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:800)
Caused: jakarta.servlet.ServletException
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:851)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:938)
        at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:369)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:61)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:800)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:938)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:721)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:253)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)
        at org.eclipse.jetty.ee9.servlet.ServletHolder.handle(ServletHolder.java:765)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1668)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:204)
        at jenkins.util.HttpServletFilter$1.doFilter(HttpServletFilter.java:77)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:201)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:207)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at jenkins.ErrorAttributeFilter.doFilter(ErrorAttributeFilter.java:29)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:154)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:95)
        at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:54)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:110)
        at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:98)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:117)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:63)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:100)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:112)
        at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:173)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at org.kohsuke.stapler.UncaughtExceptionFilter.doFilter(UncaughtExceptionFilter.java:26)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:86)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:31)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:38)
        at org.eclipse.jetty.ee9.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.ee9.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1638)
        at org.eclipse.jetty.ee9.servlet.ServletHandler.doHandle(ServletHandler.java:526)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.handle(ScopedHandler.java:127)
        at org.eclipse.jetty.ee9.security.SecurityHandler.handle(SecurityHandler.java:574)
        at org.eclipse.jetty.ee9.nested.HandlerWrapper.handle(HandlerWrapper.java:124)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.nextHandle(ScopedHandler.java:197)
        at org.eclipse.jetty.ee9.nested.SessionHandler.doHandle(SessionHandler.java:609)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.nextHandle(ScopedHandler.java:195)
        at org.eclipse.jetty.ee9.nested.ContextHandler.doHandle(ContextHandler.java:1034)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:164)
        at org.eclipse.jetty.ee9.servlet.ServletHandler.doScope(ServletHandler.java:483)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:162)
        at org.eclipse.jetty.ee9.nested.SessionHandler.doScope(SessionHandler.java:586)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.nextScope(ScopedHandler.java:162)
        at org.eclipse.jetty.ee9.nested.ContextHandler.doScope(ContextHandler.java:955)
        at org.eclipse.jetty.ee9.nested.ScopedHandler.handle(ScopedHandler.java:125)
        at org.eclipse.jetty.ee9.nested.ContextHandler.handle(ContextHandler.java:1693)
        at org.eclipse.jetty.ee9.nested.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1576)
        at org.eclipse.jetty.ee9.nested.HttpChannel.dispatch(HttpChannel.java:738)
        at org.eclipse.jetty.ee9.nested.HttpChannel.handle(HttpChannel.java:511)
        at org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler.handle(ContextHandler.java:2850)
        at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:597)
        at org.eclipse.jetty.server.Server.handle(Server.java:181)
        at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:648)
        at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:403)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
        at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:195)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
        at java.base/java.lang.Thread.run(Thread.java:840)

(While AuthorizationMatrixProperty.<init>(AuthorizationMatrixProperty.java:118) is a @DataBoundConstructor, it only exists for Job DSL. The descriptor overrides #newInstance, so this should not be invoked.)

It looks like core's handling of Descriptor#newInstance overrides clashes with the not-yet-adapted AbstractFolderPropertyDescriptor#newInstance only existing for the old signature, so this plugin cannot switch to the new types while cloudbees-folder is not yet adapted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant