Comment corriger LIMIT_EXCEEDED dans les déploiements Salesforce
Les tests Apex d'un déploiement, ou le chargement de données qui les précède, ont atteint l'une des limites de gouverneur ou limites globales de Salesforce.
Se produit lors : de l'exécution des tests Apex ou d'opérations de données en masse, pas lors de la validation du déploiement de métadonnées elle-mêmeCe que cela signifie
LIMIT_EXCEEDED regroupe une famille de limites Salesforce, le plus souvent des limites de gouverneur Apex comme les requêtes SOQL, les instructions DML ou le temps CPU, atteintes lors de l'exécution des tests qu'un déploiement requiert. Cela peut aussi signifier qu'une limite globale de l'organisation, comme les appels API quotidiens ou les destinataires d'e-mails en masse, a été dépassée par une automatisation que le déploiement déclenche.
Les limites de gouverneur par transaction (100 requêtes SOQL, 150 instructions DML, 10 000 millisecondes CPU en synchrone) se réinitialisent à chaque transaction, donc cela pointe presque toujours vers du code non optimisé en masse dans une seule transaction plutôt qu'un véritable plafond de capacité de l'organisation.
Causes courantes
La solution
- Mettre en lot (bulkifier) le chemin de code qui atteint la limiteRéécrivez le déclencheur, la classe ou le test pour opérer sur des collections plutôt que sur des enregistrements individuels, réduisant les appels SOQL et DML par transaction.
// Bad: SOQL inside a loop for (Account a : accounts) { List<Contact> cons = [SELECT Id FROM Contact WHERE AccountId = :a.Id]; } // Good: one query outside the loop Map<Id, List<Contact>> conMap = new Map<Id, List<Contact>>(); for (Contact c : [SELECT Id, AccountId FROM Contact WHERE AccountId IN :accountIds]) { if (!conMap.containsKey(c.AccountId)) conMap.put(c.AccountId, new List<Contact>()); conMap.get(c.AccountId).add(c); } - Réduire le volume de données de test au minimum nécessaireRéduisez la configuration des tests Apex au plus petit jeu de données qui exerce encore la logique testée.
- Vérifier les limites de l'organisation avant les gros déploiementsExaminez les limites d'API et autres limites quotidiennes dans Setup avant d'exécuter un chargement de données en masse ou un déploiement qui s'ajoute à l'utilisation déjà consommée ce jour-là.
Comment Serpent évite cela
Serpent réserve des scratch orgs préchauffés pour les exécutions de tests, de sorte qu'un test en masse ou un chargement de données rencontre un ensemble de limites propre au lieu de rivaliser avec tout ce qui tourne déjà dans un sandbox partagé. Consultez la bibliothèque des erreurs de déploiement Salesforce.

Prévention
Erreurs associées
LIMIT_EXCEEDED, expliqué
Démarrez gratuitement. Sans carte bancaire, sans installation, sans engagement.
Configuration en moins de 15 minutes. Aucun recrutement DevOps nécessaire.
