Échec de l’enregistrement ou du chargement du modèle de fragment de contenu en raison des limites de requête Sling
Les modèles de fragment de contenu ne peuvent pas être enregistrés, ne peuvent pas afficher tous les champs ou inversent les modifications lorsque les limites de traitement des requêtes Sling sont définies sur une valeur trop basse. Deux paramètres sont généralement impliqués : sling.max.calls, qui contrôle le nombre d’appels du serveur principal effectués par l’éditeur, et request.max.file.count, qui contrôle les demandes d’enregistrement multipartie. Les mises à niveau réinitialisent ces limites ou les configurations OSGi personnalisées les remplacent, ce qui déclenche des erreurs telles que TooManyCallsException et FileCountLimitExcededException. Pour résoudre ce problème, augmentez la limite Sling affectée, supprimez les remplacements de configuration en conflit et confirmez que l’éditeur se charge et enregistre correctement.
Description description
Environnement
- Adobe Experience Manager as a Cloud Service
- AEM Managed Services
- AEM 6.5 On-Prem
Problème/Symptômes
- Les journaux d’erreurs s’affichent
TooManyCallsException. - Les journaux d’erreurs s’affichent
FileCountLimitExceededException: attachment. - Les champs de modèle de fragment de contenu ne sont pas enregistrés.
- Les nouveaux champs disparaissent après la réouverture du modèle.
- L’éditeur n’affiche pas tous les onglets ou champs lorsque le modèle contient de nombreux champs.
- Le bouton Ajouter est absent des boîtes de dialogue avec des listes multiples imbriquées.
Cause
AEM utilise les limites de traitement des requêtes Sling pour se protéger contre l’exécution excessive de requêtes et les envois de formulaires en plusieurs parties surdimensionnés. Si sling.max.calls est trop faible, l’éditeur de modèle de fragment de contenu dépasse le nombre autorisé d’appels du serveur principal lors du chargement ou de l’enregistrement de modèles complexes, ce qui entraîne des TooManyCallsException. Si request.max.file.count est trop faible, les demandes d’enregistrement multipartie échouent avec FileCountLimitExceededException, même si aucun fichier n’est chargé. Les mises à niveau ou les configurations OSGi personnalisées réinitialisent ou remplacent ces valeurs et provoquent le retour du problème.
Résolution resolution
Pour résoudre les échecs d’enregistrement ou de chargement du modèle de fragment de contenu causés par les limites de requête Sling, procédez comme suit :
-
Identifiez l’erreur en examinant le
error.log. -
Si le journal s’affiche
TooManyCallsException, augmentezsling.max.callsdans le servlet principal Apache Sling.- Pour AEM 6.5 On-Prem ou AEM Managed Services, ouvrez
/system/console/configMgr, localisezApache Sling Main Servletet augmentezNumber of Calls per Requestde manière incrémentielle à une valeur plus élevée, telle que2000ou3000. - Pour AEM as a Cloud Service, mettez à jour les
org.apache.sling.engine.impl.SlingMainServlet.cfg.jsonde votre projetui.configet définissez-sling.max.callssur une valeur supérieure, telle que2000ou3000.
- Pour AEM 6.5 On-Prem ou AEM Managed Services, ouvrez
-
Si le journal s’affiche
FileCountLimitExceededException: attachment, augmentez larequest.max.file.countdans Gestion des paramètres de requête Apache Sling.- Pour AEM 6.5 On-Prem ou AEM Managed Services, ouvrez
/system/console/configMgr, localisezApache Sling Request Parameter Handlinget définissezMaximum File Countsur10000. - Pour AEM as a Cloud Service, mettez à jour les
org.apache.sling.engine.parameters.cfg.jsonde votre projetui.configet définissezrequest.max.file.countsur10000.
- Pour AEM 6.5 On-Prem ou AEM Managed Services, ouvrez
-
Recherchez les configurations OSGi personnalisées en conflit qui remplacent ces valeurs et les suppriment ou les corrigent.
-
Redémarrez AEM si nécessaire pour votre type de déploiement afin que les valeurs mises à jour soient appliquées.
-
Testez à nouveau le modèle en ajoutant des champs, en enregistrant et en rouvrant le modèle.
-
Vérifiez que tous les champs sont conservés et qu’aucune nouvelle erreur n’apparaît dans le
error.log.