2012-02-16 4 views
0

Получено сообщение об ошибке, когда одно приложение использует только индекс Lucene.NHibernate Search и Lucene Exception

Необработанное исключение: NHibernate.Search.Impl.SearchException: Невозможно открыть IndexWriter для Моих имен ---> Lucene.Net.Store.LockObtainFailedException: Замок получает таймаут: SimpleFSLock Моего индекса Путь \ записи. lock

Я просто блуждаю, если кто-то из вас испытал такую ​​же проблему раньше?

ответ

2

Вероятно, вы столкнулись, когда IndexWriter был открыт, и файл write.lock остался в каталоге индекса. Этот файл используется SimpleFSLockFactory, чтобы убедиться, что в любой момент времени открыт один индекс IndexWriter против индекса файловой системы.

Зайдите в свой индексный каталог и удалите файл write.lock, если NHibernate не справляется с ним автоматически.

+0

Когда я увидел исключение, write.lock вообще не был найден в каталоге индекса. – hardywang

+0

Тогда я думаю, что NHibernate, вероятно, имеет дело с ним самостоятельно, разблокируя каталог, когда он попадает в исключение. Было бы здорово, если бы эксперт Nhibernate подтвердил это. –

+0

Мой опыт в том, что он не удаляет его автоматически. Я предполагаю, что вы пытаетесь индексировать из нескольких потоков в параллели, которые не разрешены. – jishi