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

Prevent log-spam when instantiating trait based SCMNavigator / SCMSource implementations

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Spotted by Michael Neale inĀ https://github.com/jenkinsci/blueocean-plugin/pull/1199

      Jul 06, 2017 6:12:52 PM hudson.model.Descriptor$NewInstanceBindInterceptor onConvert
      WARNING: falling back to default instantiation jenkins.scm.api.trait.SCMTrait {"strategyId":"1","":"0","trust":{"stapler-class<span class="code-quote">":"org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustContributors","$class<span class="code-quote">":"org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustContributors"},"stapler-class<span class="code-quote">":"org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait","$class<span class="code-quote">":"org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait"}
      java.lang.NullPointerException
      at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:661)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:617)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:721)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:827)
      at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:777)
      at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
      at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
      at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
      at hudson.model.Descriptor.newInstance(Descriptor.java:590)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1043)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1005)
      at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
      at jenkins.branch.OrganizationFolder.submit(OrganizationFolder.java:290)
      at com.cloudbees.hudson.plugins.folder.AbstractFolder.doConfigSubmit(AbstractFolder.java:1417)
      at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.doConfigSubmit(ComputedFolder.java:334)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
      at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52)
      at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
      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$5.doDispatch(MetaClass.java:233)
      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.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:225)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
      at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:51)
      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.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:80)
      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.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
      at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
      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 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
      at java.lang.Thread.run(Thread.java:748)
      

      Root cause analysis is that the SCMTrait "abstract" classes are not abstract hence newer versions of stapler think they should use the new direct instantiation technique and when that fails (because there is no descriptor for the "abstract" classes) then it falls back to the 'traditional' technique - which works.

      Fix is to make the "abstract" classes actually abstract then Stapler will not even try direct instantiation and hence will not output the scary NPE in the logs

        Attachments

          Activity

          Hide
          michaelneale Michael Neale added a comment -

          LOLOLOLOLOLOL

          Show
          michaelneale Michael Neale added a comment - LOLOLOLOLOLOL
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Stephen Connolly
          Path:
          src/main/java/jenkins/scm/api/trait/SCMNavigatorTrait.java
          src/main/java/jenkins/scm/api/trait/SCMSourceTrait.java
          src/main/java/jenkins/scm/api/trait/SCMTrait.java
          http://jenkins-ci.org/commit/scm-api-plugin/079c1b284687d20a2b2be45034c4a115db347b54
          Log:
          [FIXED JENKINS-45331] Abstract classes should be abstract

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/java/jenkins/scm/api/trait/SCMNavigatorTrait.java src/main/java/jenkins/scm/api/trait/SCMSourceTrait.java src/main/java/jenkins/scm/api/trait/SCMTrait.java http://jenkins-ci.org/commit/scm-api-plugin/079c1b284687d20a2b2be45034c4a115db347b54 Log: [FIXED JENKINS-45331] Abstract classes should be abstract
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Stephen Connolly
          Path:
          src/main/java/jenkins/scm/api/trait/SCMNavigatorTrait.java
          src/main/java/jenkins/scm/api/trait/SCMSourceTrait.java
          src/main/java/jenkins/scm/api/trait/SCMTrait.java
          http://jenkins-ci.org/commit/scm-api-plugin/499c5a49c7425895a0bca352c222dc363e635395
          Log:
          Merge pull request #42 from stephenc/jenkins-45331

          [FIXED JENKINS-45331] Abstract classes should be abstract

          Compare: https://github.com/jenkinsci/scm-api-plugin/compare/9cefea35ffc7...499c5a49c742

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Stephen Connolly Path: src/main/java/jenkins/scm/api/trait/SCMNavigatorTrait.java src/main/java/jenkins/scm/api/trait/SCMSourceTrait.java src/main/java/jenkins/scm/api/trait/SCMTrait.java http://jenkins-ci.org/commit/scm-api-plugin/499c5a49c7425895a0bca352c222dc363e635395 Log: Merge pull request #42 from stephenc/jenkins-45331 [FIXED JENKINS-45331] Abstract classes should be abstract Compare: https://github.com/jenkinsci/scm-api-plugin/compare/9cefea35ffc7...499c5a49c742

            People

            • Assignee:
              stephenconnolly Stephen Connolly
              Reporter:
              stephenconnolly Stephen Connolly
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: