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

jenkins search java.lang.NullPointerException at hudson.search.FixedSet.find(FixedSet.java:53)

    XMLWordPrintable

Details

    Description

       

      When using the search box from a job pages (as opposed to main jenkins page), user may get a null pointer exception instead of the search results. Even refreshing the page gives the same results. 

      Going to home page and performing the same search works well.

       

      It seems that the stacktrace appears only when the search is performed from inside a build page.

      Explanation:

      https://example.com/search/?q=foobar                  --- stacktrace
      https://example.com/job/foo/search/?q=foobar          --- works
      https://example.com/job/foo/12105/search/?q=foobar    --- stacktrace

       

      java.lang.NullPointerException
      
      at hudson.search.FixedSet.find(FixedSet.java:53)
      
      at hudson.search.Search$Mode$1.find(Search.java:209)
      
      at hudson.search.Search.find(Search.java:383)
      
      at hudson.search.Search.find(Search.java:262)
      
      at hudson.search.Search.doIndex(Search.java:85)
      
      at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
      
      at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)
      
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)
      
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117)
      
      at org.kohsuke.stapler.IndexDispatcher.dispatch(IndexDispatcher.java:26)
      
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      
      Caused: javax.servlet.ServletException
      
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:765)
      
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      
      at org.kohsuke.stapler.MetaClass$3.doDispatch(MetaClass.java:209)
      
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      
      at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:374)
      
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      
      at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248)
      
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
      
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)
      
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)
      
      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:841)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
      
      at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:225)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at com.cloudbees.jenkins.support.slowrequest.SlowRequestFilter.doFilter(SlowRequestFilter.java:37)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:237)
      
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:214)
      
      at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:88)
      
      at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:114)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at com.sonymobile.jenkins.plugins.kerberossso.KerberosSSOFilter.doFilter(KerberosSSOFilter.java:147)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
      
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
      
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:64)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
      
      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:73)
      
      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:90)
      
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
      
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
      
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
      
      at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
      
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
      
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
      
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
      
      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
      
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
      
      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
      
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
      
      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
      
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
      
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
      
      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
      
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
      
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
      
      at org.eclipse.jetty.server.Server.handle(Server.java:564)
      
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)
      
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
      
      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
      
      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
      
      at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
      
      at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)
      
      at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)
      
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)
      
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)
      
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      
      at java.lang.Thread.run(Thread.java:748)
      

       

      Attachments

        Activity

          danielbeck Daniel Beck added a comment -

          There's a SearchItem that returns null on getSearchName(). Probably trivial to make the code null safe.

          More difficult to find the culprit, but that's probably secondary.

          danielbeck Daniel Beck added a comment - There's a SearchItem that returns null on getSearchName(). Probably trivial to make the code null safe. More difficult to find the culprit, but that's probably secondary.
          ssbarnea Sorin Sbarnea added a comment -

          Let me know if there is something else I can do to test.

          ssbarnea Sorin Sbarnea added a comment - Let me know if there is something else I can do to test.
          oleg_nenashev Oleg Nenashev added a comment -

          Hmm:

          I believe we need document/annotate nulls and getDisplayName() methods in a follow-up task. Otherwise there will be a risk when such "hidden items" somehow get to the search output

          oleg_nenashev Oleg Nenashev added a comment - Hmm: https://github.com/jenkinsci/jenkins/blob/22aa2e6e766074d11249893e3f35e0b99e20d3d0/core/src/main/java/hudson/model/AbstractModelObject.java#L117 Some getDisplayName() methods may return null I believe we need document/annotate nulls and getDisplayName() methods in a follow-up task. Otherwise there will be a risk when such "hidden items" somehow get to the search output
          danielbeck Daniel Beck added a comment - - edited

          Addressed in 2.142.

          danielbeck Daniel Beck added a comment - - edited Addressed in 2.142.

          People

            Unassigned Unassigned
            ssbarnea Sorin Sbarnea
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: