当应用程序服务器意外退出时,Hibernate Search 无法正常关闭 Lucene。离开写锁每个索引目录后面的文件。这当然是很正常的事情。但是 - 重新启动应用程序后,锁定文件也会保留。这会导致某些时候出现锁超时异常。
我的问题是是否有一种通常的方法来处理恢复。
首先想到的是检查 write.lock 文件是否存在。如果找到,它们将被删除并重建所有索引。但也许 Hibernate-Search 在正确配置后会自动执行此操作?
如果 Hibernate Search 要在启动时删除锁定文件,并且您错误地将两个应用程序配置为在同一索引上运行,则可能会面临破坏索引的风险。因此,不删除锁定文件是锁定的目的。
尽管如此,我们意识到这很烦人:如果您可以使用 Native LockFactory
(http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#search-configuration-directory-lockfactories http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#search-configuration-directory-lockfactories)
即使是崩溃/终止的 JVM 也会释放锁定文件。
如果升级到最新版本,如果检测到的平台被认为足够安全,则默认使用 Native。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)