Erreur « Impossible de dériver le nom d’utilisateur pour le lot et le sous-service » dans Sling JobConsumer
Cet article explique comment résoudre les problèmes où Sling JobConsumer ne parvient pas à traiter les tâches planifiées dans les environnements Adobe Experience Manager as a Cloud Service, ce qui entraîne des erreurs telles que « Impossible de dériver le nom d’utilisateur pour le lot … et le sous-service … ». La solution implique de vérifier le mappage des utilisateurs de service, l’existence des utilisateurs de service et les autorisations.
Description description
Environnement
- Adobe Experience Manager (AEM) as a Cloud Service
Problème/Symptômes
-
Les tâches planifiées restent non traitées et bloquées dans la file d’attente
-
Les rapports ne sont pas mis à jour avec de nouvelles données
-
Le tableau de bord des files d’attente de tâches affiche les chemins mis en file d’attente qui ne sont pas consommés
-
Les journaux contiennent des erreurs telles que :
Cannot derive user name for bundle [ bundle-symbolic-name] and sub service [ subservice-name]
Cause
Cette erreur se produit lorsque le JobConsumer Sling tente d’obtenir un ResourceResolver de service à l’aide d’un mappage de sous-service manquant, mal configuré ou ne disposant pas des autorisations nécessaires dans l’environnement. Par conséquent, les tâches en file d’attente ne peuvent pas être traitées.
Résolution resolution
Pour résoudre l’erreur Impossible d’obtenir le nom d’utilisateur pour le lot et le sous-service et restaurer le traitement de l’JobConsumer Sling, procédez comme suit :
-
Vérifiez le mappage utilisateur du service Sling .
- Assurez-vous que le mappage utilisateur de service correct est présent dans la configuration de l’environnement.
- Vérifiez que le mappage correspond au nom symbolique du lot et au nom de sous-service utilisé dans votre code.
- Vérifiez que le mappage ne fait pas référence à un nom symbolique de lot obsolète ou incorrect.
Exemple de mappage dans une configuration
org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-*:code language-none { "user.mapping": [ "[ bundle-symbolic-name] :[ subservice-name] =[ service-user-name] " ] }Remplacez
[ bundle-symbolic-name],[ subservice-name]et[ service-user-name]par vos valeurs réelles. -
Validez l’existence et les autorisations de l’utilisateur du service.
-
Vérifiez que l’utilisateur du service spécifié dans le mappage existe dans l’environnement.
-
Vérifiez que l’utilisateur du service dispose des autorisations requises par votre tâche sur les chemins d’accès applicables :
/content/dam/var/home- Tout chemin personnalisé utilisé par votre tâche, tel que
/var/yourproject/attestation
-
Recherchez dans les journaux d’erreurs les problèmes de connexion du résolveur d’autorisations ou de ressources.
-
-
Vérifier le déploiement et l’activation du bundle.
- Dans la console système d’AEM (
/system/console/bundles), vérifiez que le lot approprié est déployé et actif. - Si le lot est manquant, déployez-le. S’il est inactif, résolvez les problèmes OSGi qui empêchent son activation.
- Dans la console système d’AEM (
-
Vérifiez la configuration du JobConsumer et du planificateur.
- Vérifiez que le
JobConsumerSling et le planificateur sont enregistrés et actifs. - Assurez-vous que le code de cycle de vie, tel que les méthodes
@Deactivate, n’annule pas la planification globale des tâches pendant les arrêts des capsules, car cela peut affecter les environnements en cluster.
- Vérifiez que le
-
Testez et surveillez le traitement des tâches.
- Après avoir corrigé les mappages et les autorisations, remettez les chemins concernés en file d’attente et surveillez l’exécution des tâches.
- Vérifiez dans les journaux que le traitement de la tâche a réussi et confirmez que l’erreur Impossible d’obtenir le nom d’utilisateur pour le lot et le sous-service ne s’affiche plus.