[
https://issues.apache.org/jira/browse/SOLR-13187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16870802#comment-16870802
]
Munendra S N commented on SOLR-13187:
-------------------------------------
[^SOLR-13187.patch]
This includes
* Changes.txt entry and Minor refactoring
* I came across similar issue in StatsField - SOLR-13197. Here,
getQueryPlugin(which returns qparser plugin) is directly called to avoid
reparsing of the params.
* I have verified that getQueryPlugin is called only in 2 places - In QParser
and StatsField
This patch handles both NPE separately
Another way would be add new public method in QParser which can be used by
StatsField(preferred but involves introducing new public API)
[~mkhludnev]
Could you please share your thoughts on both these approaches??
> NullPointerException at o.a.solr.search.QParser.getParser
> ---------------------------------------------------------
>
> Key: SOLR-13187
> URL: https://issues.apache.org/jira/browse/SOLR-13187
> Project: Solr
> Issue Type: Bug
> Affects Versions: master (9.0)
> Environment: h1. Steps to reproduce
> * Use a Linux machine.
> * Build commit {{ea2c8ba}} of Solr as described in the section below.
> * Build the films collection as described below.
> * Start the server using the command {{./bin/solr start -f -p 8983 -s
> /tmp/home}}
> * Request the URL given in the bug description.
> h1. Compiling the server
> {noformat}
> git clone https://github.com/apache/lucene-solr
> cd lucene-solr
> git checkout ea2c8ba
> ant compile
> cd solr
> ant server
> {noformat}
> h1. Building the collection
> We followed [Exercise
> 2|http://lucene.apache.org/solr/guide/7_5/solr-tutorial.html#exercise-2] from
> the [Solr
> Tutorial|http://lucene.apache.org/solr/guide/7_5/solr-tutorial.html]. The
> attached file ({{home.zip}}) gives the contents of folder {{/tmp/home}} that
> you will obtain by following the steps below:
> {noformat}
> mkdir -p /tmp/home
> echo '<?xml version="1.0" encoding="UTF-8" ?><solr></solr>' >
> /tmp/home/solr.xml
> {noformat}
> In one terminal start a Solr instance in foreground:
> {noformat}
> ./bin/solr start -f -p 8983 -s /tmp/home
> {noformat}
> In another terminal, create a collection of movies, with no shards and no
> replication, and initialize it:
> {noformat}
> bin/solr create -c films
> curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field":
> {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}'
> http://localhost:8983/solr/films/schema
> curl -X POST -H 'Content-type:application/json' --data-binary
> '{"add-copy-field" : {"source":"*","dest":"_text_"}}'
> http://localhost:8983/solr/films/schema
> ./bin/post -c films example/films/films.json
> {noformat}
> Reporter: Cesar Rodriguez
> Assignee: Mikhail Khludnev
> Priority: Minor
> Labels: diffblue, newdev
> Attachments: SOLR-13187.patch, SOLR-13187.patch, SOLR-13187.patch,
> home.zip
>
>
> Requesting the following URL causes Solr to return an HTTP 500 error response:
> {noformat}
> http://localhost:8983/solr/films/select?fq={!a}
> {noformat}
> The error response seems to be caused by the following uncaught exception:
> {noformat}
> java.lang.NullPointerException
> at org.apache.solr.search.QParser.getParser(QParser.java:367)
> at org.apache.solr.search.QParser.getParser(QParser.java:319)
> at org.apache.solr.search.QParser.getParser(QParser.java:309)
> at
> org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:203)
> at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:272)
> at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
> at org.apache.solr.core.SolrCore.execute(SolrCore.java:2559)
> at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:711)
> at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:516)
> at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:394)
> at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:340)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
> [...]
> {noformat}
> The call to {{getQueryPlugin}} from
> {{org.apache.solr.search.QParser.getParser()}}, at line 366, can return a
> null pointer, as witnessed by the URL above. Method {{getParser}} should
> probably check for this.
> We found this bug using [Diffblue Microservices
> Testing|https://www.diffblue.com/labs/]. Find more information on this [fuzz
> testing
> campaign|https://www.diffblue.com/blog/2018/12/19/diffblue-microservice-testing-a-sneak-peek-at-our-early-product-and-results].
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]