Cola de distribución bloqueada con AccessDeniedException
Al intentar replicar contenido de página, XF u otros recursos mediante Quick Publish, Administrar publicación o Replicar, la Cola de distribución del autor se bloquea. AEM Puede comprobarlo comprobando la cola de distribución publish desde la interfaz de usuario de distribución (>
herramientas >
implementación >
distribución). Siga los pasos proporcionados en este documento para resolver el problema.
Descripción description
Entorno
- Experience Manager
- Experience Manager as a cloud service
Problemas/Síntomas
Al intentar replicar algún contenido de página (o XF y otro tipo de recursos) usando "Quick Publish", "Manage Publication" o "Replicate", la cola de distribución en Autor se bloquea.
AEM Esto se puede observar comprobando la cola de distribución publish desde la interfaz de usuario de distribución (herramientas - implementación - distribución):
Al seleccionar la cola de Golden Publisher (entrada en negrita de la lista), se proporcionan más detalles y, en particular, la RUTA involucrada (puede haber varios elementos aquí):
Al mirar la pestaña Registros, se mostrará el siguiente error correspondiente:
2023/03/08 12:11:26:238 - INFORMACIÓN - Solicitud aceptada con el paquete de distribución PackageMessage(pubSlingId=a1111111133333} 7-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159f4b-c577-4079-8741-d41660597d20, pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service,=[
/content/wknd/fr]
, deepPaths=[
]
) en offset=158705
2023/03/08 12:11:27:459 - WARN - Mensaje: Error (0/infinite) al importar el paquete de distribución PackageMessage(pubSlingId=a1133c97-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159 f4b-c577-4079-8741-d41660597d20, pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=[
/content/wknd/fr]
, deepPaths=[
]
) en offset=158705 debido a 'javax.jcr.AccessDeniedException: Oak Acceso0000: acceso denegado, el importador lo volverá a intentar más tarde,
Stacktrace: org.apache.sling.distribution.common.DistributionException: javax.jcr.AccessDeniedException: OakAccess0000: Acceso denegado[
…]
Debe Borrar cola (o quitar ese elemento) para desbloquear la cola.
Resolución resolution
A pesar de que el error es javax.jcr.AccessDeniedException
, es posible que no haya relación con la ACL / permisos para los usuarios del servicio de distribución, aunque esto debe tenerse en cuenta si el siguiente escenario no se aplica a su caso.
Diagnóstico
El error anterior puede ocurrir en algunas situaciones en las que el contenido replicado no tiene una configuración específica relacionada con la propiedad especial jcr:lockIsDeep.
Para confirmar el diagnóstico, tendrá que inspeccionar cada una de las rutas mencionadas con cualquiera de las siguientes herramientas a las que puede tener acceso o que son aplicables:
- CRX/DE para instancias de DEV
- el Explorador del repositorio
- creación de un paquete de contenido en el Administrador de paquetes (esta opción también forma parte de la resolución)
A continuación, debe comprobar el nodo jcr:content
de cada ruta encontrada en la interfaz de usuario de la cola de distribución y comprobar si:
- tiene tiene una propiedad
jcr:lockIsDeep
="(Boolean)true" - No tiene una propiedad
jcr:lockOwner="xxx"
- ( it does not have a
mix:lockable
value in thejcr:mixinTypes
)
Si este es el caso, el problema se confirma, ya que la propiedad jcr:lockIsDeep
no debe estar presente sola. Esta propiedad siempre se debe establecer junto con jcr:lockOwner
al bloquear una página.
No es posible establecer solamente la propiedad jcr:lockIsDeep
, ni siquiera usando la API JCR, por lo que la causa principal que explica esta situación es haber instalado un paquete de contenido corrupto con esa sola propiedad.
Resolución
Para corregir el contenido, la única solución es instalar un paquete en Author que tenga las propiedades correctas establecidas en el nodo correspondiente.
Puede crear ese paquete a partir de otra instancia que tenga el contenido correspondiente o si solo tiene este contenido en la instancia afectada, puede seguir estas instrucciones:
- Genere un paquete en la instancia dañada para la página defectuosa
- Descargar el paquete
- Extraiga
.content.xml
para la página/jcr:content - Quitar manualmente la línea con jcr:lockIsDeep
- Actualice el paquete con el archivo .content.xml nuevo/fijo
- Vuelva a cargar e instale el paquete modificado
Vuelva a comprobar las propiedades de la página y pruebe correctamente la replicación/distribución.