Problema

Al actualizar AEM, instalar un Service Pack (SP) o un Cumulative Fix Pack (CFP), hay un ConstraintViolationException registrado en el archivo error.log.

Ejemplo #1:
En el ejemplo de abajo, el error se debe al nodo /content/communities durante la instalación de AEM 6.3 SP1 CFP2.  Ese nodo es normalmente una carpeta sling:, pero, en el entorno con el error, el nodo era una carpeta nt:.

03.04.2018 16:28:09.921 *ERROR* [http-10.158.146.131:25104-2] org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage Error during install.
javax.jcr.nodetype.ConstraintViolationException: OakConstraint0001: /content/communities[[nt:folder]]: No matching definition found for child node enablement with effective type [nt:unstructured, rep:AccessControllable]

Ejemplo 2:
En el siguiente ejemplo, un error similar rompió la actualización de AEM 6.0 a 6.3.  Una instalación de paquetes falló porque el tipo de nodo de /libs/settings/granite/operations/maintenance/granite_weekly era nt: folder en lugar de sling: Folder.

21.09.2017 12:03:18.132 *ERROR* [OsgiInstallerImpl] com.adobe.granite.installer.factory.packages.impl.PackageTransformer Error while processing install task of day/cq60/product:cq-platform-content:1.3.234.
org.apache.jackrabbit.vault.packaging.PackageException: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0001: /libs/settings/granite/operations/maintenance/granite_weekly[[nt:folder]]: No matching definition found for child node granite_AuditLogMaintenanceTask with effective type [nt:unstructured]

Entorno

AEM 6.x

Causa

La causa es que las versiones anteriores de AEM tienen un tipo de nodo diferente para ciertas carpetas.  Cuando el nodo cambia en versiones futuras, se produce este error e interrumpe las actualizaciones y/o instalaciones de parches.

Resolución

Siga los pasos que se indican a continuación antes de aplicar la actualización o el paquete de correcciones. Asegúrese de que no hay usuarios en el sistema.

  1. Vaya a http://aem-host:port/crx/de/index.jsp e inicie sesión como usuario administrador.
  2. Vaya al nodo causante del error. Por ejemplo, en el error anterior, es /content/communities.
  3. Cambie el nombre de ese nodo, por ejemplo, /content/communities a /content/communities-old.
  4. Cree un nodo con el tipo de nodo correcto. Por ejemplo, /content/communities con tipo de nodo sling: Carpeta, en lugar de nt: carpeta.
  5. Haga clic en Guardar todo.
  6. Desplazar todos los subnodos del nodo antiguo al nuevo que tenga el tipo de nodo correcto. Por ejemplo, mueva todos los subnodos de /content/communities-old a /content/communities.
  7. Haga clic en Guardar todo.

Notas internas

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea