We recently updated from Solr 4.0.0 to Solr 4.1.0.  Because of the change we 
were forced to upgrade a custom query parser.  While the code change itself was 
minimal, we found that our unit tests stopped working because of a 
NullPointerException on line 181 of handler.component.SearchHandler:
ShardHandler shardHandler1 = shardHandlerFactory.getShardHandler();
We determined that the cause of this exception was that shardHandlerFactory was 
never initialized in the solr container.  The reason for this seems to be that 
the shard handler is setup in core.CoreContainer::initShardHandler which is 
called from core.CoreContainer::load.
When setting up the core container we were using the  public 
CoreContainer(SolrResourceLoader loader) constructor.  This constructor never 
calls the load method, so initShardHandler is never called and the shardHandler 
is never initialized.

In Solr 4.0.0 the shardHandler was initialized on the calling of 
getShardHandlerFactory.  This code was modified and moved by revision 1422728: 
SOLR-4204: Make SolrCloud tests more friendly to FreeBSD blackhole 2 
environments.

We fixed our issue by using the public CoreContainer(String dir, File 
configFile) constructor which calls the load method.
I just wanted to make sure that people were aware of this issue and to 
determine if it really is an issue or if having the shardHandler be null was 
expected behavior unless someone called the load(String dir, File configFile ) 
method.

Thank you,

Ted



Stack trace of error:
org.apache.solr.client.solrj.SolrServerException: 
org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
                at 
org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:223)
                at 
org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:90)
                at 
org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301)
                at 
com.cision.search.solr.ProximityQParserTest.testInit(ProximityQParserTest.java:72)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
                at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
                at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
                at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
                at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
                at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
                at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
                at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
                at 
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
                at 
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
                at 
org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
                at 
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
                at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
                at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
                at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
                at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
                at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
                at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
                at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
                at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.apache.solr.client.solrj.SolrServerException: 
java.lang.NullPointerException
                at 
org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:155)
                ... 27 more
Caused by: java.lang.NullPointerException
                at 
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:181)
                at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
                at org.apache.solr.core.SolrCore.execute(SolrCore.java:1816)
                at 
org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:150)
                ... 27 more

___________________________________________
Ted Merchant
Developer II
312-873-6667
cision.com<http://www.cision.com/>
Cision. Power Your Story.
Connect with us:
[http://us.cision.com/images/facebook.png]<http://www.facebook.com/cision> 
[http://us.cision.com/images/twitter.png] <http://twitter.com/cision>  
[http://us.cision.com/images/linkedin.png] 
<http://www.linkedin.com/company/cision>  
[http://us.cision.com/images/youtube.png] <http://www.youtube.com/user/CisionNA>

Reply via email to