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

    • Similar Issues:

      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

          Hide
          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.

          Show
          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.
          Hide
          ssbarnea Sorin Sbarnea added a comment -

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

          Show
          ssbarnea Sorin Sbarnea added a comment - Let me know if there is something else I can do to test.
          Hide
          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

          Show
          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
          Hide
          danielbeck Daniel Beck added a comment - - edited

          Addressed in 2.142.

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

            People

            • Assignee:
              Unassigned
              Reporter:
              ssbarnea Sorin Sbarnea
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: