miércoles, 21 de octubre de 2015

org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/opt/tomcat/repository/index/com.openkm.dao.bean.NodeBase/write.lock

Cuando paramos OpenKM de una manera incorrecta, bien porque paramos el servidor que aloja la aplicación de OpenKM sin pararlo primero de manera ordenada o bien porque matamos el servicio de la aplicación directamente, es muy posible que se corrompan o se bloqueen los índices de lucene. De esta manera si tenemos una aplicación, por ejemplo en java, trabajando contra OpenKM y se nos produce este bloqueo o corrupción de los índices de lucene tendremos entre otros este conjunto de errores (los pongo con el fin de que a la gente le sea más fácil encontrar este artículo):
  • ERROR com.openkm.dao.HibernateUtil- could not init listeners
    org.hibernate.HibernateException: could not init listeners
     
  • ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OpenKM].[CXFServlet]- El Servlet.service() para el servlet [CXFServlet] en el contexto con ruta [/OpenKM] lanzó la excepción [La ejecución del Filtro lanzó una excepción] con causa raíz
    org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@/opt/tomcat/repository/index/com.openkm.dao.bean.NodeBase/write.lock

Pasos para solucionarlo

Antes de nada indicar que mi tomcat, donde esta desplegado OpenKM, está instalado en /opt/tomcat/ y el directorio donde se encuentra el repositorio de OpenKM lo tengo en /opt/tomcat/repository/.

1.- Entramos en el directorio bin de nuestro tomcat.
[root@openkm ~]# cd /opt/tomcat/bin/

2.- Paramos el servicio de tomcat donde está desplegado OpenKM.
[root@openkm: /opt/tomcat/bin/]# ./shutdown.sh

3.- Como siempre, es recomendable realizar un backup del directorio index, que es donde se almacenan los índices de lucene sobre los que vamos a realizar las siguientes acciones. Para ello basta con realizar un tar del directorio.
[root@openkm: /opt/tomcat/bin/]#  tar -czvf index.tar.gz /opt/tomcat/repository/index

4.- Eliminamos el directorio index de nuestro repositorio
 [root@openkm: /opt/tomcat/bin/]# rm -rf /opt/tomcat/repository/index

5.- Levantamos el tomcat que tiene el OpenKM
[root@openkm: /opt/tomcat/bin/]# ./startup.sh

Tras esto OpenKM regenerará toda la estructura de índices de lucene. No os preocupéis si a priori no veis que se ha vuelto a generar la carpeta index y su contenido cuando lo arrancamos tras borrarla porque lo regenerará en el momento en el que empecemos a descargar, subir o ver documentos.

No hay comentarios:

Publicar un comentario