由:org.apache.solr.common引起,SolrException:索引已锁定,无法写入核心

sdnqo3pr  于 2022-10-21  发布在  Apache
关注(0)|答案(8)|浏览(228)

我们正在使用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
hrirmatl

hrirmatl1#

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

ymdaylpp

ymdaylpp2#

索引似乎已在索引期间锁定。
通常会有一封信。锁定索引中需要删除才能取回的文件。
如果索引在索引之间中断或其他可能导致锁定文件仍在索引中的问题,则可能会出现这种情况。
检查Forum
写锁是由于IndexWriter始终在Solr中打开,即使在从机上也是如此。
检查Index Lock选项是否可以处理配置中的情况。
[原始链接的存档副本:https://web.archive.org/web/http://docs.lucidworks.com/display/solr/IndexConfig+in+SolrConfig]

3df52oht

3df52oht3#

如果您正在使用Rails,
只需添加到solr中。xml此行

<lockType>simple</lockType>

它对我很有用)

xytpbqjk

xytpbqjk4#

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

ntjbwcob

ntjbwcob5#

在我的例子中,当我尝试在包含现有核心索引的路径中创建一个新的核心时,出现了这个错误,例如

/data/index/

这是因为我更改了solrconfig。xml索引数据目录,将默认路径移动到我调用的另一个位置:

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

所以重用solrconfig。xml创建新核心会导致错误。将其更改为:

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

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

rlcwz9us

rlcwz9us6#

尝试使用:容器。shutdown()在索引之后,如果您想在不删除文件“write.lock”的情况下再次更新/搜索,它将起作用。

rm5edbpk

rm5edbpk7#

检查权限是否为root用户,并更改核心文件的权限

s4n0splo

s4n0splo8#

这很可能是由于文件拥有错误的所有权。检查权限和所有权。
如果您在完成上述任务后仍然遇到错误,您可能希望看到以下内容:;
为核心删除文件夹/data/index/中的文件write.lock,然后删除restartTomcat Server。
Linux中的Restart Tomcat服务器:

<Tomcat Root>/bin>./catalina.sh stop

<Tomcat Root>/bin>./catalina.sh start

相关问题