2012-03-19 88 views
3

當應用程序服務器意外退出時,Hibernate Search無法正常關閉Lucene。在每個索引目錄中留下write.lock文件。這當然很正常。但是 - 重新啓動應用程序後鎖定文件仍然存在。在某些時候會導致鎖定超時異常。如何處理Hibernate-Search索引恢復?

我的問題是是否有通常的方法來處理恢復。

首先想到的是檢查是否存在write.lock文件。如果找到一個,它們將被刪除,所有索引都將被重建。但是,也許Hibernate-Search在配置正確時會自動執行此操作?

+0

之前沒有人需要處理write.lock文件嗎? – 2012-03-20 09:16:09

回答

3

如果Hibernate Search在啓動時刪除鎖定文件,那麼如果您錯誤地配置了兩個應用程序在同一索引上運行,則可能會損壞索引。因此不刪除鎖文件是鎖的目的。

儘管如此,我們意識到這是惱人的:如果你可以使用Native LockFactory (http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#search-configuration-directory-lockfactories) 甚至崩潰/ JVM殺將解除鎖定的文件。

如果您升級到最新版本,默認情況下使用Native,如果檢測到的平臺足夠安全。