当应用程序服务器意外退出时,Hibernate Search无法正常关闭Lucene。在每个索引目录中留下 write.lock 文件。那当然很正常。但是 - 重启应用程序后,锁文件也会保留。这会导致锁定超时异常。
我的问题是,是否有通常的方法来处理恢复。
首先要考虑的是检查是否存在write.lock文件。如果找到一个,则删除它们并重建所有索引。但也许Hibernate-Search在正确配置后会自动执行此操作?
答案 0 :(得分:3)
如果Hibernate Search在启动时删除锁定文件,如果错误地将两个应用程序配置为在同一索引上运行,则可能会破坏索引。因此,不删除锁定文件是锁定的目的。
仍然,我们意识到这很烦人:如果你可以使用Native LockFactory (http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#search-configuration-directory-lockfactories) 即使是崩溃/被杀死的JVM也会释放锁文件。
如果升级到最新版本,如果检测到的平台被认为足够安全,则默认使用Native。