LockObtainFailedException mise à jour de l'index de recherche Lucene en utilisant solr

J'ai googlé ce beaucoup. La plupart de ces problèmes sont causés par un verrouillage d'être de gauche autour après une JVM crash. Ce n'est pas mon cas.

J'ai un index avec plusieurs lecteurs et d'écrivains. Je suis suis en train de faire une mise à jour de l'indice de masse (supprimer et ajouter-c'est à quel lucene ne les mises à jour). Je suis l'aide de solr est un serveur embarqué (org.apache.solr.client.solrj.incorporé.EmbeddedSolrServer). D'autres écrivains sont à l'aide de la télécommande, non-serveur de streaming (org.apache.solr.client.solrj.impl.CommonsHttpSolrServer).

J'ai le coup d'envoi de cette mise à jour en masse, il fonctionne très bien pendant un moment, puis meurt avec un

Causés par:
org.apache.lucene.magasin.LockObtainFailedException:
Verrouillage obtenir timed out:
NativeFSLock@/.../lucene-ff783c5d8800fd9722a95494d07d7e37-écrire.verrouillage

J'ai ajusté mon délais de verrouillage en solrconfig.xml

<writeLockTimeout>20000</writeLockTimeout>
<commitLockTimeout>10000</commitLockTimeout>

Je suis sur le point de commencer la lecture de la lucene code pour comprendre cela. Toute aide donc je n'ai pas à faire ce serait super!

EDIT: Toutes mes mises à jour de passer par le code suivant (Scala):

val req = new UpdateRequest
req.setAction(AbstractUpdateRequest.ACTION.COMMIT, false, false)
req.add(docs)

val rsp = req.process(solrServer)

solrServer est une instance de org.apache.solr.client.solrj.impl.CommonsHttpSolrServer, org.apache.solr.client.solrj.impl.StreamingUpdateSolrServer, ou org.apache.solr.client.solrj.incorporé.EmbeddedSolrServer.

UN AUTRE EDIT:
J'ai cessé d'utiliser EmbeddedSolrServer et cela fonctionne maintenant. J'ai deux processus distincts de mise à jour de l'index de recherche solr:

1) de la Servlet
2) outil de ligne de Commande

L'outil de ligne de commande a l'aide de la EmbeddedSolrServer et qu'il finirait par se bloquer avec le LockObtainFailedException. Quand j'ai commencé à utiliser StreamingUpdateSolrServer, les problèmes ont disparu.

Je suis encore un peu confus que le EmbeddedSolrServer fonctionne pas du tout. Quelqu'un peut m'expliquer ce. Je pensais qu'il allait jouer bien avec la Servlet et qu'ils devraient attendre tandis que l'autre est écrit.

source d'informationauteur three-cups