淘淘商城第61讲——搭建Solr集群时,报错:org.apache.solr.common.SolrException: No shard id for CoreDescriptor ···
问题描述
搭建好Solr集群之后,我们就会想着要来启动每一个Tomcat服务器实例。当我使用tail -f /usr/local/solr-cloud/tomcat01/logs/catalina.out
命令来查看第一个Tomcat服务器的启动日志时,发现报了一个如下图所示的异常。
不仅第一个Tomcat服务器的启动日志会显示如上异常,而且其他的Tomcat服务器启动时都会报这个异常,该异常的详细信息如下所示。
java.util.concurrent.ExecutionException: org.apache.solr.common.SolrException: Unable to create core [core1]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.solr.core.CoreContainer.lambda$load$14(CoreContainer.java:671)
at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:176)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:188)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.solr.common.SolrException: Unable to create core [core1]
at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1045)
at org.apache.solr.core.CoreContainer.lambda$load$13(CoreContainer.java:642)
at com.codahale.metrics.InstrumentedExecutorService$InstrumentedCallable.call(InstrumentedExecutorService.java:197)
... 5 more
Caused by: org.apache.solr.common.SolrException: No shard id for CoreDescriptor[name=core1;instanceDir=/usr/local/solr-cloud/solrhome01/core1]
at org.apache.solr.cloud.ZkController.checkStateInZk(ZkController.java:1604)
at org.apache.solr.cloud.ZkController.preRegister(ZkController.java:1546)
at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1022)
... 7 more
注意:在这儿我使用的Solr是Apache Solr 7.1.0
这个版本的。
报错原因
仔细查看上面的异常信息,不难猜测报错原因应该是名称为core1的Solr Core的配置中没有shard这个东东,那我就想了,是不是添加上这个玩意就好了呢?咱们接下来拭目以待!
解决方案
进入到每一个solrhome的core1目录中,然后更改core.properties配置文件,即在其中添加shard=s1
这样一行配置,正如下图所示。
这个时候,再次启动每一个Tomcat服务器实例,你便会发现每一个Tomcat服务器启动时再也不会报这样的异常了。
还没有评论,来说两句吧...