Comment corriger UNKNOWN_EXCEPTION dans les déploiements Salesforce

Salesforce a renvoyé une erreur générique et non catégorisée, indiquant généralement un problème côté org plutôt que les métadonnées du déploiement lui-même.

Apparaît pendant : toute opération de déploiement ou DML, comme fourre-tout lorsque rien de plus spécifique ne s'applique

Ce que cela signifie

UNKNOWN_EXCEPTION est le code d'erreur fourre-tout de Salesforce pour les échecs qui ne correspondent à aucun type d'erreur spécifique et documenté. Il indique souvent un problème au niveau de l'org, un problème temporaire de plateforme, une exception non gérée profondément dans un package géré, ou un conflit de métadonnées trop inhabituel pour être catégorisé, plutôt qu'un défaut du package de déploiement lui-même.

Comme le code lui-même ne porte aucun détail diagnostique, traitez-le comme un signal pour regarder vers l'extérieur, l'état de l'instance, l'intérieur du package, et les déploiements partiels précédents, plutôt que de supposer que la solution se trouve quelque part dans les métadonnées que vous venez d'écrire.

Diagnostic

Causes courantes

Problème temporaire de plateforme
Un problème temporaire d'infrastructure Salesforce ou un délai d'expiration pendant le déploiement, sans rapport avec le contenu du déploiement.
Exception non gérée à l'intérieur d'un package géré
La logique interne d'un package géré lève une exception qui n'est pas exposée avec un code d'erreur spécifique aux orgs abonnées.
État de métadonnées corrompu ou conflictuel
L'org cible a des métadonnées dans un état incohérent, souvent laissées par un déploiement précédent échoué ou partiel qui n'a pas été nettoyé.

La solution

  1. Réessayez le déploiement
    De nombreux échecs UNKNOWN_EXCEPTION sont transitoires ; une simple nouvelle tentative les résout sans aucun changement.
  2. Vérifiez le statut Salesforce Trust pour l'instance cible
    Confirmez qu'il n'y a pas d'incident actif ou de fenêtre de maintenance sur l'instance de l'org avant de poursuivre le dépannage.
    https://status.salesforce.com/instances/<your-instance>
  3. Déployez un sous-ensemble plus petit pour isoler la cause
    Divisez le déploiement en éléments plus petits pour identifier quel composant spécifique déclenche l'exception, puisque l'erreur elle-même ne donne aucun détail.
En pratique

Comment Serpent évite cela

Serpent conserve des journaux de déploiement complets et un historique par tâche, de sorte qu'un déploiement retenté après une UNKNOWN_EXCEPTION est traçable jusqu'à la tentative exacte qui a échoué, au lieu de se perdre dans une exécution CI ponctuelle. Consultez la bibliothèque des erreurs de déploiement Salesforce.

Métadonnées et données dans un seul flux de déploiement dans Serpent

Prévention

Nettoyez complètement les déploiements échoués avant de réessayer
Vérifiez qu'un déploiement précédent échoué ou partiel n'a pas laissé les métadonnées dans un état incohérent avant de tenter la prochaine release.
Gardez les déploiements assez petits pour les bissecter rapidement
Privilégiez des déploiements plus petits et plus fréquents plutôt que rares et volumineux, afin qu'un échec opaque comme celui-ci soit rapide à isoler en divisant le changement.
Journalisez chaque tentative de déploiement avec suffisamment de détails pour comparer avec une nouvelle tentative
Conservez les ID de déploiement et les journaux de résultats complets pour chaque tentative, afin que, si une nouvelle tentative réussit, vous puissiez comparer ce qui a changé au lieu de simplement passer à autre chose.
Questions fréquentes

UNKNOWN_EXCEPTION, expliqué

Dois-je ouvrir un dossier de support Salesforce pour UNKNOWN_EXCEPTION ?
Si réessayer et isoler le composant ne résout pas le problème, oui. Comme l'erreur ne porte aucun détail, le support Salesforce peut souvent voir la trace de pile sous-jacente que le résultat du déploiement n'expose pas.
Quelles informations dois-je rassembler avant de contacter le support ?
L'ID du déploiement ou du job, l'horodatage exact de l'échec, et le nom d'instance de l'org ; le support peut retrouver l'erreur sous-jacente à partir de l'ID de déploiement même lorsque le message côté client est générique.
UNKNOWN_EXCEPTION signifie-t-il que le même échec se reproduira toujours ?
Pas nécessairement. Une part significative de ces échecs sont des problèmes de plateforme transitoires qui se résolvent d'eux-mêmes, c'est pourquoi réessayer est toujours la première étape, pas un dernier recours.

Commencez gratuitement. Sans carte bancaire, sans installation, sans engagement.

Configuration en moins de 15 minutes. Aucune embauche DevOps nécessaire.

Curieux de livrer plus vite avant de vous lancer ? Parlons-en

Sans engagement.