Solr:在核心交换后卸载核心永远等待

时间:2016-02-26 14:13:21

标签: java solr

我创建了一个Solr CoreAdminHandler扩展,目标是交换两个核心并删除旧核心。

我的代码如下所示:

SolrCore core = coreContainer.create("newcore", coreProps)
coreContainer.swap("newcore", "livecore")
// the old livecore is now newcore, so unload it and remove all the related dirs
coreContainer.unload("newcore", true, true, true)

执行完最后一条语句后,Solr日志开始永远打印以下消息

  

61424 INFO(pool-1-thread-1)[x:newcore] o.a.s.c.SolrCore   核心新核尚未关闭,在检查前等待100毫秒   试。

我尝试在卸载之前和之后调用SolrCore实例上的close()方法,但结果是一样的。

有什么想法吗?这可能是Solr的错误吗?

EDIT 我在Solr jira中为此创建了一个问题: https://issues.apache.org/jira/browse/SOLR-8757

1 个答案:

答案 0 :(得分:2)

在Solr jira上打开问题超过10天后,我没有得到任何回复(这对开源社区来说不是一个好兆头),所以我花了一些时间找到解决方法。在实际卸载它之前,我基本上关闭了我要卸载的核心的引用。这是代码:

SolrCore core = coreContainer.create("newcore", coreProps)
coreContainer.swap("newcore", "livecore")

// the old livecore is now newcore, so unload it and remove all the related dirs
SolrCore oldCore = coreContainer.getCore("newCore")
while (oldCore.getOpenCount > 1) {
  oldCore.close()
}
coreContainer.unload("newcore", true, true, true)