Как справиться с восстановлением индекса Hibernate-Search? - PullRequest
3 голосов
/ 19 марта 2012

Когда сервер приложений неожиданно завершает работу, Hibernate Search не может выполнить корректное завершение Lucene. Оставляя write.lock файлов позади в каждом каталоге индекса. Это, конечно, вполне нормально. Но - файлы блокировки также остаются после перезапуска приложения. Что вызывает исключения тайм-аута блокировки в какое-то время.

У меня вопрос, есть ли обычный способ справиться с восстановлением.

Первым делом стоит проверить наличие файлов write.lock. Если он найден, он удаляется и все индексы перестраиваются. Но, может быть, Hibernate-Search делает это автоматически при правильной настройке?

1 Ответ

3 голосов
/ 31 марта 2012

Если бы Hibernate Search удалил файлы блокировки при загрузке, это может привести к разрушению вашего индекса, если вы по ошибке настроили два приложения для работы с одним и тем же индексом. Следовательно, не удаление файла блокировки является целью блокировки.

Тем не менее, мы поняли, что это раздражает: если вы можете использовать Native LockFactory (http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#search-configuration-directory-lockfactories) даже сбитая / убитая JVM снимет блокировку файлов.

При обновлении до последних версий по умолчанию используется Native, если обнаруженная платформа считается достаточно безопасной.

...