You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Lajos <la...@protulae.com> on 2014/02/14 01:06:45 UTC

Unloading a SolrCloud core in 4.6.0

Hi all,

I just want to verify that it is no longer possible to unload a Cloud 
core via the Core API UNLOAD command, correct?

I had two situations: one where I wanted to remove old replicas in a 
node that I was deactivating (and I had already created new replicas) 
and one where I needed to remove a shard I split.

In both cases I got this nice stack trace:

<response>
<lst name="responseHeader"><int name="status">500</int><int 
name="QTime">1</int></lst><lst name="error"><str 
name="trace">java.lang.NullPointerException
         at 
org.apache.solr.core.CorePropertiesLocator.delete(CorePropertiesLocator.java:95)
         at 
org.apache.solr.core.CoreContainer.remove(CoreContainer.java:754)
         at 
org.apache.solr.handler.admin.CoreAdminHandler.handleUnloadAction(CoreAdminHandler.java:589)
         at 
org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:162)
         at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
         at 
org.apache.solr.servlet.SolrDispatchFilter.handleAdminRequest(SolrDispatchFilter.java:662)
         at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:248)
         at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:197)
         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
         at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
         at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
         at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
         at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
         at java.lang.Thread.run(Thread.java:662)
</str><int name="code">500</int></lst>
</response>

I had to resort to DELETEREPLICA, which worked fine, but I just wanted 
to verify whether this is a bug or intended behavior. Lots of older docs 
say to use UNLOAD for these situations.

Thanks,

Lajos


Re: Unloading a SolrCloud core in 4.6.0

Posted by Joel Bernstein <jo...@gmail.com>.
Lajos,

Just did a quick test on 4.6.1 UNLOADing a SolrCloud replica using the core
admin API and it worked as expected. I'm running with the core.properties
setup. Are you running with an old style solr.xml?

The  org.apache.solr.core.CorePropertiesLocator.delete() method in trunk
and 4x are protecting against an NPE. In 4.6 and 4.6.1 the NPE check is not
present. So the issue may be resolved in trunk and 4x.


Joel Bernstein
Search Engineer at Heliosearch


On Thu, Feb 13, 2014 at 7:06 PM, Lajos <la...@protulae.com> wrote:

> Hi all,
>
> I just want to verify that it is no longer possible to unload a Cloud core
> via the Core API UNLOAD command, correct?
>
> I had two situations: one where I wanted to remove old replicas in a node
> that I was deactivating (and I had already created new replicas) and one
> where I needed to remove a shard I split.
>
> In both cases I got this nice stack trace:
>
> <response>
> <lst name="responseHeader"><int name="status">500</int><int
> name="QTime">1</int></lst><lst name="error"><str name="trace">java.lang.
> NullPointerException
>         at org.apache.solr.core.CorePropertiesLocator.delete(
> CorePropertiesLocator.java:95)
>         at org.apache.solr.core.CoreContainer.remove(
> CoreContainer.java:754)
>         at org.apache.solr.handler.admin.CoreAdminHandler.
> handleUnloadAction(CoreAdminHandler.java:589)
>         at org.apache.solr.handler.admin.CoreAdminHandler.
> handleRequestBody(CoreAdminHandler.java:162)
>         at org.apache.solr.handler.RequestHandlerBase.handleRequest(
> RequestHandlerBase.java:135)
>         at org.apache.solr.servlet.SolrDispatchFilter.handleAdminRequest(
> SolrDispatchFilter.java:662)
>         at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:248)
>         at org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:197)
>         at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:243)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:210)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:222)
>         at org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:123)
>         at org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java:171)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:100)
>         at org.apache.catalina.valves.AccessLogValve.invoke(
> AccessLogValve.java:953)
>         at org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:118)
>         at org.apache.catalina.connector.CoyoteAdapter.service(
> CoyoteAdapter.java:408)
>         at org.apache.coyote.http11.AbstractHttp11Processor.process(
> AbstractHttp11Processor.java:1041)
>         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.
> process(AbstractProtocol.java:603)
>         at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.
> run(JIoEndpoint.java:310)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.
> runTask(ThreadPoolExecutor.java:895)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:918)
>         at java.lang.Thread.run(Thread.java:662)
> </str><int name="code">500</int></lst>
> </response>
>
> I had to resort to DELETEREPLICA, which worked fine, but I just wanted to
> verify whether this is a bug or intended behavior. Lots of older docs say
> to use UNLOAD for these situations.
>
> Thanks,
>
> Lajos
>
>