2012-02-16 18 views
0

Luceneインデックスを排他的に使用しているアプリケーションでエラーメッセージが表示されます。NHibernate検索とLucene例外

未処理の例外:NHibernate.Search.Impl.SearchException:私の名前空間のためにIndexWriter開くことができません ---> Lucene.Net.Store.LockObtainFailedException:ロックがタイムアウトし得る:SimpleFSLock 私のインデックスパス \書き込み。ロック

前に同じ問題を経験したことがありますか?

答えて

2

IndexWriterが開かれていて、write.lockファイルがインデックスディレクトリに残っているときにクラッシュした可能性があります。このファイルはSimpleFSLockFactoryによって使用され、特定の時点でファイルシステムインデックスに対して1つのIndexWriterが開かれていることを確認します。

NHibernateが自動的に処理しない場合は、indexディレクトリに移動し、write.lockファイルを削除します。

+0

私は例外を見たとき、write.lockはインデックスディレクトリにまったく見つかりませんでした。 – hardywang

+0

それで、NHibernateはおそらくそれが例外に当たったときにDirectoryをロック解除することによって、それ自身でそれを処理すると思います。 Nhibernateの専門家にこれを確認させることは素晴らしいことです。 –

+0

私の経験では、それは自動的に削除されません。私はあなたがパラレルで許可されていない複数のスレッドからインデックスを作成しようとしていることを推測しています。 – jishi