问题是:我尝试更换一个核心,创建一个具有不同名称的新核心,交换然后卸载旧核心,但它失败了。 现在,甚至尝试手动清理所有内容(使用AdminPanel卸载内核或使用deleteIndexDir = true& deleteInstanceDir = true通过curl删除内核并删除两个内核的物理指令,无效。
如果我使用 AdminPanel 卸载核心,那么我不再看到核心了。但STATUS命令仍然返回我:
$ curl -XGET 'http://localhost:8983/solr/admin/cores?action=STATUS&core=mycore&wt=json'
{"responseHeader":{"status":0,"QTime":0},"initFailures":{},"status":{"mycore":{"name":"mycore","instanceDir":"/var/solr/data/mycore","dataDir":"data/","config":"solrconfig.xml","schema":"schema.xml","isLoaded":"false"}}}
但是,如果我尝试通过卷曲卸载核心:
$ curl -XGET 'http://localhost:8983/solr/admin/cores?action=UNLOAD&deleteIndexDir=true&deleteInstanceDir=true&core=mycore&wt=json'
{"responseHeader":{"status":0,"QTime":0}}
并没有效果。我仍然看到AdminPanel中列出的核心,STATUS返回完全相同,当然如果我想访问核心错误,则会弹出告诉我solrconfig.xml不存在。当然,什么都不存在。
我知道如果我重新启动Solr一切都会好的。但是,只要它单独变脏,我就无法在生产中重新启动Solr(而且经常会这样做)。 前段时间我发表评论here,但我没有得到任何有用的回复。
现在,真正的问题是,在生产中还有其他核心工作并重启Solr需要大约半个小时,这根本不行。
所以,问题是如何在不重启Solr的情况下正确清理卸载的内核。请在说“不,不可能”之前尝试了解业务需求。它必须以某种方式。如果你知道为什么它不可能的原因,让我们开始一起思考它是如何可能的。
更新
我在这里添加了一些我发现查看日志的错误,我希望它有所帮助:
我刚刚注意到错误打开搜索者和创建核心的错误是相关的,都有
Caused by: java.nio.file.FileAlreadyExistsException: /var/solr/data/mycore/data/index/write.lock