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.