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 :

  1. 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.

  2. 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.

  3. 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.
  4. Vérifiez la configuration du JobConsumer et du planificateur.

    • Vérifiez que le JobConsumer Sling 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.
  5. 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.
recommendation-more-help
experience-cloud-kcs-help-kbarticles