我创建了一个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
答案 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)