You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@solr.apache.org by Nick Vladiceanu <vl...@gmail.com> on 2022/10/14 08:47:59 UTC

Solr 9 standalone mode nullPointerException when ShardHandlerFactory defined

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

Re: Solr 9 standalone mode nullPointerException when ShardHandlerFactory defined

Posted by Nick Vladiceanu <vl...@gmail.com>.
Sounds great, I’ve created Jira ticket here https://issues.apache.org/jira/browse/SOLR-16485 <https://issues.apache.org/jira/browse/SOLR-16485> 

Thank you

Best regards,
Nick Vladiceanu

> On 20. Oct 2022, at 7:02 PM, Houston Putman <ho...@gmail.com> wrote:
> 
> 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 <vladiceanu.n@gmail.com <ma...@gmail.com>>
> 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> <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/>
>> <
>> 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


Re: Solr 9 standalone mode nullPointerException when ShardHandlerFactory defined

Posted by Houston Putman <ho...@gmail.com>.
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 <vl...@gmail.com>
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

Re: Solr 9 standalone mode nullPointerException when ShardHandlerFactory defined

Posted by Houston Putman <ho...@apache.org>.
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 <vl...@gmail.com>
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