22

我们正在使用带有主/从设置的 solr4.3,今天我收到以下错误并且 solr 停止响应。这可能是什么原因造成的,

 Caused by: org.apache.solr.common.SolrException: Index locked for write for core XXX
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:821)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:618)
    at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:949)
    at org.apache.solr.core.CoreContainer.create(CoreContainer.java:984)
    at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:597)
    at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:592)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    ... 1 more
Caused by: org.apache.lucene.store.LockObtainFailedException: Index locked for write for core XX        at org.apache.solr.core.SolrCore.initIndex(SolrCore.java:484)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:745)
    ... 13 more
4

7 回答 7

22

删除核心文件write.lock夹中/data/index/的文件,然后重新启动tomcat。它会起作用的。

于 2014-10-06T02:51:43.547 回答
19

似乎索引在索引期间已被锁定。
通常索引中会有一个 write.lock 文件,需要将其删除才能将其取回。
如果索引中断或其他可能导致锁定文件仍在索引中的问题,则可能会发生这种情况。

检查论坛

写锁是由于 IndexWriter 始终在 Solr 中打开,即使在从属服务器上也是如此。

检查可以处理配置中条件的索引锁定选项。

[原始链接的存档副本: https ://web.archive.org/web/http://docs.lucidworks.com/display/solr/IndexConfig+in+SolrConfig ]

于 2013-07-03T09:54:30.987 回答
1

有时会发生这种情况,因为当前用户在目录中没有权限。尝试使用 root 并使用 -force 来启动 solr。

于 2017-12-19T17:54:29.667 回答
1

如果你使用 Rails,

只需将这一行添加到 solr.xml

<lockType>simple</lockType>

它对我有用)

于 2017-07-05T18:25:02.757 回答
0

尝试在索引后使用:container.shutdown(),如果您想再次更新/搜索而不删除文件“write.lock”,它可以工作。

于 2018-02-27T09:23:54.540 回答
0

检查权限是否适用于root并更改核心文件的权限

于 2021-07-07T13:57:32.923 回答
0

在我的情况下,当我尝试在包含现有核心索引的路径中创建新核心时发生此错误,例如

/data/index/

发生这种情况是因为我更改了 solrconfig.xml 索引数据目录以将默认路径移动到我调用的另一个位置:

<dataDir>/data/index/</dataDir>

因此重用 solrconfig.xml 来创建新内核会导致错误。将其更改为:

<dataDir>${solr.data.dir}/${solr.core.name}</dataDir>

导致在与其核心名称相关的路径中创建新核心的索引,因此在创建新核心期间不会遇到现有核心索引的 write.lock 权限问题

于 2022-01-19T09:53:27.913 回答