Correction de l’exception jcr:mixinTypes ValueFormatException dans les versions AEM
Les versions de pipeline dans Adobe Experience Manager (AEM) as a Cloud Service échouent en raison d’un lot de org.apache.sling.jcr.repoinit obsolète. Ce problème se produit lorsqu’un script repoInit affecte incorrectement une valeur unique à une propriété JCR à plusieurs valeurs, déclenchant une ValueFormatException. Cet article explique la cause première et décrit les étapes à suivre pour résoudre le problème en mettant à jour le lot et en corrigeant le script.
Description description
Environnement
- Adobe Experience Manager (AEM) as a Cloud Service - Sites
- La version actuelle
org.apache.sling.jcr.repoinitlot est la version 1.1.38. La version 1.154 ou ultérieure est requise. - Les échecs de pipeline se produisent par intermittence pendant les déploiements. Les déploiements d’environnements de développement réussissent généralement.
Problème/Symptômes
La création du pipeline échoue avec l’erreur suivante :
Exception dans un SlingRepositoryInitializer, l’enregistrement du service SlingRepository a interrompu javax.jcr.RepositoryException : l’application de l’opération repoinit a échoué malgré la reprise ; définissez loglevel sur DEBUG pour afficher toutes les exceptions. Dernier message d’exception provenant de l’adresse « Configuration PID 313[ script 0] » : Impossible de définir les propriétés sur le chemin [ /conf/somepath ] : javax.jcr.ValueFormatException : Impossible d’attribuer une seule valeur à une propriété à plusieurs valeurs : jcr:mixinTypes = mix:lockable
Cause principale
Le script repoInit tente d'affecter jcr:mixinTypes comme une valeur unique au lieu d’un tableau à plusieurs valeurs. Cela entraîne une exception ValueFormatException non gérée, ce qui entraîne l’échec de l’exécution du pipeline.
Résolution resolution
Pour résoudre ce problème, procédez comme suit :
- Modifiez le script repoInit de sorte que
jcr:mixinTypessoit écrit sous la forme d’un tableau à plusieurs valeurs ou supprimez la ligne si les mixins sont déjà présents. - Mettez à niveau le lot
org.apache.sling.jcr.repoinitvers la version 1.154 ou ultérieure qui comprend un correctif pour ce problème. Cette mise à jour peut être incluse dans les prochaines versions de Foundation. vérifiez la disponibilité des planifications de versions. - Jusqu’à ce que le lot mis à jour soit disponible, assurez-vous que les scripts repoInit utilisent des tableaux pour les propriétés à plusieurs valeurs.
L’implémentation de ces étapes permet de limiter efficacement les échecs de création de pipeline causés par des erreurs d’initialisation du référentiel.