This is a known bug. See https://issues.apache.org/jira/browse/SOLR-5204

Patches welcome.


On Wed, Oct 23, 2013 at 8:27 AM, Shamik Bandopadhyay <sham...@gmail.com>wrote:

> Hi,
>  .96
>   I'm trying to simulate a fault tolerance test where a shard and its
> replica(s) goes. down, leaving other shard(s) running. To test it, I added
> <str name="shards.tolerant">true</str> in my request handler under defaults
> section. This is to make sure that the condition is added to each query
> running against this request handler.
>
> In my test environment, I have to 2 shards with a replica each. I brought
> down Shard 1 and Replica 1, then fired a query using SolrJ CloudSolrServer,
> which internally talks to the zookeeper ensemble. In my request handler,
> the spellcheck option is turned on. Due to this, the servers are throwing
> null pointer exception. Here's the stack trace.
>
> 2013-10-22 20:24:43,875] INFO482886[qtp1783079124-15] -
> org.apache.solr.core.SolrCore.execute(SolrCore.java:1909) - [collection1]
> webapp=/solr path=/testhtmlhelp
>
> params={spellcheck=on&q=xref&wt=xml&fq=TestProductLine:"ADT"&fq=TestProductRelease:"ADT+2014"&fq=language:"english"}
> hits=157 status=500 QTime=70
> [2013-10-22 20:24:43,876]ERROR482887[qtp1783079124-15] -
> org.apache.solr.common.SolrException.log(SolrException.java:119) -
> null:java.lang.NullPointerException
>         at
>
> org.apache.solr.handler.component.SpellCheckComponent.finishStage(SpellCheckComponent.java:323)
>         at
>
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:317)
>         at
>
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1904)
>         at
>
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:659)
>         at
>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:362)
>         at
>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
>         at
>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
>         at
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>         at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
>         at
>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>         at
>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>         at
>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>         at
>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>         at
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>         at
>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>         at
>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
>         at
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>         at org.eclipse.jetty.server.Server.handle(Server.java:368)
>         at
>
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>         at
>
> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
>         at
>
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
>         at
>
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
>         at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>         at
>
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
>         at
>
> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
>         at
>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>         at
>
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>         at java.lang.Thread.run(Thread.java:619)
>
>
> Here's the query detail from the server log, as you can see the spellcheck
> is on.
>
> [collection1] webapp=/solr path=/testhtmlhelp
>
> params={facet=on&f.TestCategory.facet.limit=160&tie=0.01&shards.qt=/testhtmlhelp&fl=id,score&facet.field=Source2&fq=TestProductLine:"ADT"&fq=TestProductRelease:"ADT+2014"&fq=language:"english"&rows=150&defType=edismax&start=0&spellcheck=on&shards.tolerant=true&&shard.url=localhost:8984/solr/collection1/|localhost:8983/solr/collection1/&q=xref&isShard=true}
> hits=157 status=0 QTime=15
>
>  Now, if I comment out the spellcheck option in request handler, the query
> works as expected, even if the other shard and its replica is down.
>
> Is this a known bug in Solr 4.4 ? What'll be the recommended work-around to
> address this issue ? Any pointers will be appreciated.
>
> Thanks,
> Shamik
>



-- 
Regards,
Shalin Shekhar Mangar.

Reply via email to