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

NPE caused by FunctionQParser returning a null ValueSource

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 8.8, main (9.0)
    • Component/s: None
    • Labels:
      None

      Description

      When parsing a sub query in a function query, FunctionQParser#parseValueSource does not check if the produced query object is null. When it is, it just wraps a null in a QueryValueSource object. This is a cause for NPE's in code consuming that object. Parsed queries can be null, for example when the query string only contains stopwords, so we need handle that condition.

      Steps to reproduce the issue

      1. Start solr with the techproducts example collection: solr start -e techproducts
      2. Add a stopword to SOLR_DIR/example/techproducts/solr/techproducts/conf/stopwords.txt, for example "at"
      3. Reload the core
      4. Execute a function query:
        http://localhost:8983/solr/techproducts/select?fieldquery={!field%20f=features%20v=%27%22at%22%27}&q={!func}%20if($fieldquery,1,0)

      The following stacktrace is produced:

      2020-12-03 13:35:38.868 INFO  (qtp2095677157-21) [   x:techproducts] o.a.s.c.S.Request [techproducts]  webapp=/solr path=/select params={q={!func}+if($fieldquery,1,0)&fieldquery={!field+f%3Dfeatures+v%3D'"at"'}} status=500 QTime=34
      2020-12-03 13:35:38.872 ERROR (qtp2095677157-21) [   x:techproducts] o.a.s.s.HttpSolrCall null:java.lang.NullPointerException
              at org.apache.lucene.queries.function.valuesource.QueryValueSource.hashCode(QueryValueSource.java:63)
              at org.apache.lucene.queries.function.valuesource.IfFunction.hashCode(IfFunction.java:129)
              at org.apache.lucene.queries.function.FunctionQuery.hashCode(FunctionQuery.java:176)
              at org.apache.solr.search.QueryResultKey.<init>(QueryResultKey.java:53)
              at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1341)
              at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:580)
      

        Attachments

          Activity

            People

            • Assignee:
              mdrob Mike Drob
              Reporter:
              boxtelp Pieter

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 2h 10m
                2h 10m

                  Issue deployment