Síntomas
En un entorno CRX agrupado en TarPM, la siguiente excepción se lanza cuando se inician nodos de clústeres CRX adicionales:
ADVERTENCIA com.day.crx.persistence.tar.ReplicatingTarSet.open: No se pudo adquirir el bloqueo de /repository/shared/version/control javax.jcr.RepositoryException: la página inicial del repositorio /repository/shared/version/control parece estar en uso ya que el fichero llamado .lock está bloqueado por otro proceso.
Causa
Esta excepción se lanza debido a un problema de bloqueo cuya causa puede ser una de las siguientes:
- Una instancia CRX que mantenía el bloqueo en una carpeta compartida (versión, espacio de trabajo, diario o repositorio) se apagaba de forma extraña, dejando atrás archivos
.lock
obsoletos. - Un nodo de clúster CRX tiene actualmente el bloqueo en una carpeta compartida, pero otras instancias de clúster CRX no pueden conectarse al nodo de clúster CRX maestro
La primera situación no suele ser problemática, el archivo .lock
obsoleto se elimina y se reemplaza. Sin embargo, cuando se utiliza una versión anterior de NFS, es posible que el sistema de archivos no libere el bloque de este archivo después de un fallo.
Esto último supone un problema, ya que la comunicación entre un nodo de clúster CRX maestro y esclavo es necesaria para asegurar una sincronización adecuada del acceso de escritura al repositorio. Si un nodo de clúster esclavo no puede conectarse al nodo de clúster maestro a través de la red, asume que no se está ejecutando e intenta asumir el rol maestro.
Resolución
Al utilizar una versión anterior de NFS, asegúrese de detener todos los procesos y elimine manualmente todos los archivos .lock. Si esto no resuelve el problema, en la carpeta compartida que causa dicho problema, compruebe el parámetro de dirección
del archivo listener.properties
.
Ejemplo:
dirección=192.168.1.22\:58128
Todos los nodos del clúster CRX (esclavo) leen este archivo. Por lo tanto, todas las máquinas esclavas deben poder acceder a la dirección IP; de lo contrario, se producirá dicha excepción.
De forma predeterminada, CRX utilizará cualquier interfaz de red y puerto disponible. También es posible asignar explícitamente una dirección IP y un intervalo de puertos a utilizar. Estos ajustes se tienen que establecer en el nivel TarPersistenceManager tanto en repository.xml
como en workspace.xml
:
<PersistenceManager class="com.day.crx.persistence.tar.TarPersistenceManager"> ... <param name="bindAddress" value="192.168.1.10" /> <param name="portList" value="9100-9110" /> </PersistenceManager>
Aplica
CRX1.4.x (agrupado)
Inicia sesión en tu cuenta