【发布时间】:2012-03-24 20:46:46
【问题描述】:
我们的应用程序使用嵌入式 Solr 实例进行搜索。数据目录位于 NFS 上,我无法更改它。 Solr 的使用非常简单,有一个定期更新索引的线程和几个读取线程——这些都在一个 java 进程中。没有其他 Solr 交互发生。
使用默认的“solrconfig.xml”,我有时会遇到“java.nio.channels.OverlappingFileLockException”。据我了解,原因实际上是“SimpleFSLockFactory”无法与 NFS 一起正常工作。
问题:
鉴于上面描述的应用场景(没有并发索引修改),NoLockFactory应该不够吗?使用 NoLockFactory 有什么缺点吗?如果我设置 NoLockFactory,我会在错误日志中看到许多条目,说“配置警告:锁定已禁用”。为什么该消息会进入错误日志?这真的被认为是一个错误案例吗?为什么?
也许有比使用“NoLockFactory”更好的解决方案?
不确定这是否与 NFS 有关,但有时(很少见)我的索引会损坏,并且在尝试更新索引时会收到很多“java.io.FileNotFoundException: _i.fdx”。除了手动删除整个索引目录并从头开始之外,没有其他办法。为什么会发生这种情况,是否有任何优雅的方法可以自动检测损坏的索引并恢复?
【问题讨论】:
-
确定您使用的是简单锁?
java.nio.channels.OverlappingFileLockException在我看来更像是本机锁定错误,但我可能错了。