2011-07-07 4 views
0

Je reçois cette erreur lorsque je fais la mise à jour ou l'ajout du Lucene documnet. Je sais que cela se produit lorsque l'indexeur est utilisé par d'autres ressources, nous obtenons cette Excitation SimpleFSLock, mais dans mon scénario, je ferme toujours mon IndexWriter afin qu'il n'y ait aucune chance d'ouverture de l'indexeur.Comment faire face/corriger SimpleFSLock dans Lucene

Y at-il un moyen si je reçois cette exception, je peux résoudre ce problème.

Edit:

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); 
       } 
      } 
     } 
+0

Affichez le morceau de code dans lequel vous effectuez le verrouillage. –

Répondre

0

"mais dans mon scénario i toujours fermer mon IndexWriter donc il n'y a aucune chance de indexwriter être ouvert" je ne serais pas si sûr!

0

Vous ne gérez pas les exceptions dans votre code, vous devriez avoir une clause finaly qui ferme() le IndexWriter lorsqu'une exception survient pour effacer le fichier "write.lock".

Ajoutez cela à votre code, puis accédez à votre répertoire d'index et supprimez manuellement le fichier write.lock.