Skip to content

Build against core PR with ee9 #163

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

Closed
wants to merge 4 commits into from
Closed

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.

@daniel-beck
Copy link
Member Author

Superseded by #167

@daniel-beck daniel-beck deleted the ee9 branch January 27, 2025 19:53
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