So it looks like this could be an easy fix, regardless of whether Standalone should support the shardHandlerFactory being included. If you make a JIRA, I'll submit a PR.
As for the CI tests/production clusters comment, I would recommend using the embedded zookeeper and make a single node Solr Cloud for your CI. Best to keep everything as similar as possible. - Houston On Fri, Oct 14, 2022 at 4:48 AM Nick Vladiceanu <[email protected]> wrote: > hello folks, > we’re in process of upgrading our Solr from 8.11 to 9.0. While upgrading > the image for CI tests (meaning solr runs in standalone mode), we’ve > spotted that Solr fails to create cores with a “NullPointerException" error > when “shardHandlerFactory” is defined for any handlers in the > solrconfig.xml file. > > Snippet from solrconfig.xml: > > <requestHandler name="/select" class="solr.SearchHandler" default="true”> > ….. > <shardHandlerFactory name="shardHandlerFactory" > class="HttpShardHandlerFactory"> > <int name="socketTimeout">${socketTimeout:800}</int> > <int name="connTimeout">${connTimeout:500}</int> > </shardHandlerFactory> > </requestHandler> > > Snippet of NullPointerException (full text here: > https://justpaste.it/5lntq <https://justpaste.it/5lntq> ): > > olxeu-atlas-web-dist-solr-1 | Caused by: java.lang.NullPointerException > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.handler.component.HttpShardHandlerFactory.setSecurityBuilder(HttpShardHandlerFactory.java:299) > ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.handler.component.SearchHandler.inform(SearchHandler.java:185) > ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:722) > ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.core.SolrCore.<init>(SolrCore.java:1155) ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.core.SolrCore.<init>(SolrCore.java:1048) ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1560) > ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > org.apache.solr.core.CoreContainer.lambda$load$10(CoreContainer.java:950) > ~[?:?] > olxeu-atlas-web-dist-solr-1 | at > com.codahale.metrics.InstrumentedExecutorService$InstrumentedCallable.call(InstrumentedExecutorService.java:202) > ~[metrics-core-4.1.5.jar:4.1.5] > > Steps: > 1. Run library/solr:9.0.0 in docker (default config, no tunings); mount a > volume with solrconfig.xml that contains shardHandlerFactory and schema.xml; > 2. Create a core using the solrconfig.xml: > http://localhost:8983/solr/admin/cores?action=CREATE&name=test&instanceDir=/var/solr/data/test&config=solrconfig.xml&dataDir=data/ > < > http://localhost:8983/solr/admin/cores?action=CREATE&name=test&instanceDir=/var/solr/data/test&config=solrconfig.xml&dataDir=data/ > > > 3. Failure with nullPointerException; > 4. Remove the shardHandlerFactory block; > 5. Repeat step 2; > 6. Success. > > Works fine when running Solr in SolrCloud mode. > > It’s understandable that shardHandlerFactory might not have any effect > when running Solr in Standalone mode, since there is not inter-nodes > requests routing, however, there are scenarios when we need to test and > apply exactly the same solrconfig.xml in Standalone mode (i.e. during CI > tests) and in Cloud mode (i.e. production clusters). What should be the > expected behaviour, ignoring irrelevant configuration as it used to be in > previous version of Solr? > > Did anyone else face this issue? What would be the approach to solve it? > Perhaps, there is a bug reported already? Thanks > > Best regards, > Nick Vladiceanu
