Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-13196

NullPointerException in o.a.solr.search.facet.FacetFieldProcessor.findTopSlots()

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • 9.0
    • None
    • None

    Description

      Requesting the following URL causes Solr to return an HTTP 500 error response:

      http://localhost:8983/solr/films/select?facet.sort=asc&facet=on&bf=2&q=x&facet.version=2&facet.field=genre
      

      The error response seems to be caused by the following uncaught exception:

      java.lang.NullPointerException
      	at org.apache.solr.search.facet.FacetFieldProcessor.lambda$findTopSlots$1(FacetFieldProcessor.java:325)
      	at org.apache.solr.search.facet.FacetFieldProcessor$1.lessThan(FacetFieldProcessor.java:331)
      	at org.apache.solr.search.facet.FacetFieldProcessor$1.lessThan(FacetFieldProcessor.java:329)
      	at org.apache.lucene.util.PriorityQueue.upHeap(PriorityQueue.java:254)
      	at org.apache.lucene.util.PriorityQueue.add(PriorityQueue.java:131)
      	at org.apache.solr.search.facet.FacetFieldProcessor.findTopSlots(FacetFieldProcessor.java:363)
      	at org.apache.solr.search.facet.FacetFieldProcessorByArray.calcFacets(FacetFieldProcessorByArray.java:114)
      	at org.apache.solr.search.facet.FacetFieldProcessorByArray.process(FacetFieldProcessorByArray.java:62)
      	at org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
      	at org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:472)
      	at org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:429)
      	at org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
      	at org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
      	at org.apache.solr.search.facet.FacetModule.process(FacetModule.java:139)
      	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
      [...]
      

      Removing any parameter in the URL makes the NPE disappear, so all URL parameters seem to be involved.

      Method org.apache.solr.search.facet.FacetFieldProcessor.findTopSlots(), at line 316 retrieves the field sortAcc, which is null. This null pointer is subsequently used in a lambda expression, line 325 (and 320!). I guess the problem is that some input validation is missing?

      We found this bug using Diffblue Microservices Testing. Find more information on this fuzz testing campaign.

      Attachments

        1. home.zip
          376 kB
          Cesar Rodriguez

        Issue Links

          Activity

            People

              Unassigned Unassigned
              cesar.rodriguez Cesar Rodriguez
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: