Как решить / исправить SimpleFSLock в Lucene - PullRequest
0 голосов
/ 07 июля 2011

Я получаю эту ошибку, когда обновляю или добавляю документацию lucene. Я знаю, что это происходит, когда indexwriter используется другим ресурсом, мы получаем это Исключение SimpleFSLock, но в моем сценарии я всегда закрываю свой IndexWriter, чтобы не было возможности открытия indexwriter.

Есть ли способ, если я получу это исключение, я могу это исправить.

Редактировать:

static object myLock = new object(); 

  public static void AddDocument(//some params)
        {
            lock (myLock)
            {
                try
                {
//I get the exception thrown on below line [not sure but might be file have been locked due to other resource accessing it : how can i free this lock]
                    IndexWriter writer = new IndexWriter(GetFileInfo(indexName), analyzer, false);
                    writer.AddDocument(*//some document //*);
                    writer.Optimize();
                    writer.Close();
                }
                catch (Exception ex)
                {
                    log.LogWarn(null, ex.Message);
                }
            }
        }

Ответы [ 2 ]

0 голосов
/ 11 июля 2011

Вы не обрабатываете исключения в своем коде, у вас должно быть предложение finaly, которое закрывает () IndexWriter, когда возникает исключение для очистки файла «write.lock».

Добавьте это в свой код изатем перейдите в каталог index и вручную удалите файл write.lock.

0 голосов
/ 08 июля 2011

"но в моем сценарии я всегда закрываю свой IndexWriter, чтобы не было возможности открыть indexwriter" Я бы не был так уверен!

...