Solución de problemas de replicación

Esta página proporciona información sobre cómo solucionar problemas de replicación.

Problema

La replicación (replicación no inversa) da error por algún motivo.

Resolución

Existen varias razones para que la replicación falle. Este artículo explica el enfoque que se puede seguir al analizar estos problemas.

¿Se activan las replicaciones al hacer clic en el botón Activar? Si NO es así, haga lo siguiente:

  1. Vaya a /crx/explorer e inicie sesión como administrador.
  2. Abra "Explorador de contenido"
  3. Vea si existe un nodo /bin/replicate o /bin/replicate.json. Si el nodo existe, elimínelo y guárdelo.

¿Las replicaciones se están poniendo en cola en las colas del agente de replicación?

Para comprobar esto, vaya a /etc/replication/agents.author.html y haga clic en los agentes de replicación.

Si una o varias colas de agentes están atascadas:

  1. Muestra la cola tapado ¿status? Si es así, ¿la instancia de publicación no se está ejecutando o no responde por completo? Compruebe la instancia de publicación para ver qué le sucede (es decir, compruebe los registros y vea si hay un error OutOfMemory o algún otro problema). Entonces, si es solo lento en general, tome volcados de hilos y analícelos.

  2. ¿Se muestra el estado de la cola? La cola está activa: n.º pendiente? Básicamente, el trabajo de replicación se podría quedar atascado en una lectura de socket esperando a que responda la instancia de publicación o el distribuidor. Esto podría significar que la instancia de publicación o el despachante están bajo carga alta o atascados en un bloqueo. Tome los volcados de hilos del autor y publíquelos en este caso.

    • Abra los volcados de hilos del autor en un analizador de volcado de hilos y compruebe si muestra que el trabajo de evento de sling del agente de replicación está atascado en un socketRead.
    • Abra los volcados de hilos de la publicación en un analizador de volcado de hilos y analice qué podría estar causando que la instancia de publicación no responda. Debería ver un subproceso con el POST /bin/receive en su nombre, que es el subproceso que recibe la replicación del autor.

Si todas las colas del agente están atascadas

  1. Es posible que un fragmento de contenido determinado no se pueda serializar en /var/replication/data debido a que el repositorio está dañado o a algún otro problema. Compruebe si hay algún error relacionado en logs/error.log. Para borrar el elemento de replicación incorrecto, haga lo siguiente:

    1. Vaya a https://<host>:<port>/crx/de e inicie sesión como usuario administrador.
    2. Haga clic en "Herramientas" en el menú superior.
    3. Haga clic en el botón de lupa.
    4. Seleccione "XPath" como Tipo.
    5. En el cuadro "Consulta", introduzca esta consulta /jcr:root/var/eventing/jobs//element(*,slingevent:Job) ordenar por @slingevent:created
    6. Haga clic en Buscar
    7. En los resultados, los elementos principales son los últimos trabajos de eventos de Sling. Haga clic en cada una de ellas y busque las réplicas atascadas que coincidan con lo que aparece en la parte superior de la cola.
  2. Puede haber algún problema con las colas de trabajos del marco de eventos de Sling. Intente reiniciar el paquete org.apache.sling.event en /system/console.

  3. Puede ser que el procesamiento del trabajo esté completamente desactivado. Puede comprobarlo en la Consola Felix, en la pestaña Evento de Sling. Compruebe si se muestra: Evento de Apache Sling (EL PROCESAMIENTO DEL TRABAJO ESTÁ DESHABILITADO)

    • Si es así, compruebe el controlador de eventos del trabajo Apache Sling en la pestaña Configuración en la consola Felix. Es posible que la casilla "Procesamiento de trabajos activado" esté desmarcada. Si está marcado y sigue mostrando que "el procesamiento del trabajo está deshabilitado", compruebe si hay alguna superposición en /apps/system/config que esté deshabilitando el procesamiento del trabajo. Intente crear un nodo osgi:config para jobmanager.enabled con un valor booleano en true y vuelva a comprobar si la activación se ha iniciado y no hay más trabajos en cola.
  4. También puede ocurrir que la configuración de DefaultJobManager pase a un estado incoherente. Esto puede suceder cuando alguien modifica manualmente la configuración del "Controlador de eventos de trabajos de Apache Sling" a través de la consola OSG (por ejemplo, deshabilita y vuelve a habilitar la propiedad "Procesamiento de trabajos habilitado" y guarda la configuración).

    • En este punto, la configuración de DefaultJobManager almacenada en crx-quickstart/launchpad/config/org/apache/sling/event/impl/jobs/DefaultJobManager.config entra en un estado incoherente. Y aunque la propiedad "Apache Sling Job Event Handler" muestra que "Procesamiento de trabajos activado" está en estado activado, cuando se navega a la pestaña Eventos de Sling, muestra el mensaje: EL PROCESAMIENTO DE TRABAJOS ESTÁ DESHABILITADO y la replicación no funciona.
    • Para resolver este problema, se tendría que navegar a la página Configuración de la consola OSGi y eliminar la configuración "Controlador de eventos de trabajo de Apache Sling". A continuación, reinicie el nodo principal del clúster para volver a poner la configuración en un estado coherente. Esto debería solucionar el problema y la replicación volverá a funcionar.

Crear un archivo replication.log

A veces puede resultar muy útil configurar todos los registros de replicación para agregarlos en un archivo de registro independiente en el nivel DEBUG. Para ello, haga lo siguiente:

  1. Vaya a https://host:port/system/console/configMgr e inicie sesión como administrador.

  2. Busque la fábrica del registrador de Apache Sling y cree una instancia haciendo clic en + a la derecha de la configuración de fábrica. Esto creará un nuevo registrador.

  3. Establezca la configuración de esta manera:

    • Nivel de registro: DEPURAR
    • Ruta del archivo de registro: logs/replication.log
    • Categorías: com.day.cq.replication
  4. Si sospecha que el problema está relacionado con eventos/trabajos de sling de alguna manera, también puede agregar este paquete java en categorías:org.apache.sling.event

Pausa de cola del agente de replicación

A veces puede ser adecuado pausar la cola de replicación para reducir la carga en el sistema de creación, sin deshabilitarla. Actualmente esto solo es posible por un hackeo de la configuración temporal de un puerto no válido. A partir de la versión 5.4, puede ver el botón de pausa en la cola del agente de replicación. Tiene algunas limitaciones

  1. El estado no es persistente, lo que significa que si reinicia un servidor o se recicla un paquete de replicación, vuelve al estado de ejecución.
  2. La pausa está inactiva durante un período más corto (OOB 1 hora después de que no haya actividades con replicación de otros subprocesos) y no durante un tiempo más largo. Porque hay una función en sling que evita las roscas inactivas. Básicamente, compruebe si un hilo de cola de trabajos se ha utilizado durante un tiempo más largo, si es así, inicia ciclos de limpieza. Debido al ciclo de limpieza, detiene el hilo y, por lo tanto, se pierde el ajuste en pausa. Dado que los trabajos se mantienen, inicia un nuevo subproceso para procesar la cola que no tiene detalles de la configuración en pausa. Debido a esto, la cola se convierte en estado de ejecución.

Los permisos de la página no se replican en la activación del usuario

Los permisos de página no se replican porque se almacenan en los nodos a los que se concede acceso, no con el usuario.

En general, los permisos de página no deben replicarse del autor a la publicación y no están disponibles de forma predeterminada. Esto se debe a que los derechos de acceso deben ser diferentes en esos dos entornos. Por lo tanto, se recomienda configurar las ACL en la publicación por separado del autor.

Cola de replicación bloqueada al replicar información de área de nombres de Autor a Publicar

En algunos casos, la cola de replicación se bloquea al intentar replicar la información del área de nombres de la instancia de autor a la instancia de publicación. Esto sucede porque el usuario de replicación no tiene jcr:namespaceManagement privilegio. Para evitar este problema, asegúrese de que:

  • El usuario de replicación (como se configura en la Transporte (pestaña > Usuario) también existe en la instancia de publicación.
  • El usuario tiene privilegios de lectura y escritura en la ruta donde está instalado el contenido.
  • El usuario tiene jcr:namespaceManagement en el nivel de repositorio. Puede otorgar el privilegio de la siguiente manera:
  1. Iniciar sesión en CRX/DE ( https://localhost:4502/crx/de/index.jsp) como administrador.
  2. Haga clic en Control de acceso pestaña.
  3. Seleccionar Repositorio.
  4. Clic Agregar entrada (el icono "+").
  5. Introduzca el nombre del usuario.
  6. Seleccionar jcr:namespaceManagement de la lista de privilegios.
  7. Haga clic en Aceptar.

En esta página