You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Munendra S N (Jira)" <ji...@apache.org> on 2019/12/22 05:25:00 UTC

[jira] [Updated] (SOLR-13195) NPE caused by distributed queries when no shards are configured

     [ https://issues.apache.org/jira/browse/SOLR-13195?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Munendra S N updated SOLR-13195:
--------------------------------
    Component/s:     (was: Facet Module)
                 FacetComponent

> NPE caused by distributed queries when no shards are configured
> ---------------------------------------------------------------
>
>                 Key: SOLR-13195
>                 URL: https://issues.apache.org/jira/browse/SOLR-13195
>             Project: Solr
>          Issue Type: Bug
>          Components: FacetComponent
>    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: Johannes Kloos
>            Priority: Major
>              Labels: diffblue, newdev
>
> Requesting the following URL causes Solr to return an HTTP 500 error response:
> {noformat}
> http://localhost:8983/solr/films/select?distrib=true&facet=on&facet.field=genre
> {noformat}
> The error response seems to be caused by the following uncaught exception:
> {noformat}
> null:java.lang.NullPointerException
> at org.apache.solr.handler.component.FacetComponent$DistribFieldFacet.<init>(FacetComponent.java:1432)
> at org.apache.solr.handler.component.FacetComponent$FacetInfo.parse(FacetComponent.java:1266)
> at org.apache.solr.handler.component.FacetComponent.modifyRequest(FacetComponent.java:528)
> at org.apache.solr.handler.component.ResponseBuilder.addRequest(ResponseBuilder.java:162)
> at org.apache.solr.handler.component.QueryComponent.createMainQuery(QueryComponent.java:755)
> at org.apache.solr.handler.component.QueryComponent.regularDistributedProcess(QueryComponent.java:546)
> at org.apache.solr.handler.component.QueryComponent.distributedProcess(QueryComponent.java:499)
> at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:348)
> {noformat}
> Since the query contains “distrib=true”, it is handled by calling the distributedProcess methods of the search pipeline. At no point in the call chain that leads to the above exception is there any check if the ResponseBuilder rb used to handle the request actually has its shared property configured. Nevertheless, the DistribFieldFact constructor tries to access rb.shards.length, but rb.shared is null in this example.
> We found this bug using [Diffblue Microservices Testing|https://www.diffblue.com/labs/?utm_source=solr-br]. 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?utm_source=solr-br].



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org