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

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

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Duplicate
    • Affects Version/s: main (9.0)
    • Fix Version/s: None
    • Component/s: None
    • Labels:
    • Environment:

      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

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

                Dates

                • Created:
                  Updated:
                  Resolved: