So beheben Sie UNKNOWN_EXCEPTION in Salesforce-Deployments

Salesforce gab einen generischen, nicht kategorisierten Fehler zurück, der meist auf ein Problem auf Org-Seite hinweist statt auf die eigenen Metadaten des Deployments.

Tritt auf bei: jeder Deployment- oder DML-Operation, als Sammelfehler, wenn nichts Spezifischeres zutrifft

Was das bedeutet

UNKNOWN_EXCEPTION ist Salesforces Sammelfehlercode für Fehlschläge, die keinem bestimmten, dokumentierten Fehlertyp entsprechen. Er weist oft auf ein Problem auf Org-Ebene hin, ein vorübergehendes Plattformproblem, eine unbehandelte Ausnahme tief in einem Managed Package, oder einen Metadatenkonflikt, der zu ungewöhnlich ist, um kategorisiert zu werden, statt auf einen Fehler im Deployment-Paket selbst.

Da der Code selbst keine diagnostischen Details enthält, behandeln Sie ihn als Signal, nach außen zu schauen, auf Instanzstatus, Package-Interna und frühere Teil-Deployments, statt anzunehmen, die Lösung liege irgendwo in den Metadaten, die Sie gerade geschrieben haben.

Diagnose

Häufige Ursachen

Vorübergehendes Plattformproblem
Ein temporäres Salesforce-Infrastrukturproblem oder eine Zeitüberschreitung während des Deployments, unabhängig vom Inhalt des Deployments.
Unbehandelte Ausnahme innerhalb eines Managed Packages
Die interne Logik eines Managed Packages löst eine Ausnahme aus, die Subscriber-Orgs nicht mit einem spezifischen Fehlercode offengelegt wird.
Beschädigter oder widersprüchlicher Metadatenzustand
Die Ziel-Org hat Metadaten in einem inkonsistenten Zustand, oft übrig geblieben von einem früheren fehlgeschlagenen oder teilweisen Deployment, das nicht bereinigt wurde.

Die Lösung

  1. Deployment erneut versuchen
    Viele UNKNOWN_EXCEPTION-Fehler sind vorübergehend; ein einfacher erneuter Versuch löst sie ohne jede Änderung.
  2. Salesforce-Trust-Status für die Zielinstanz prüfen
    Bestätigen Sie, dass kein aktiver Vorfall oder Wartungsfenster auf der Instanz der Org vorliegt, bevor Sie weiter Fehler beheben.
    https://status.salesforce.com/instances/<your-instance>
  3. Kleinere Teilmenge deployen, um die Ursache zu isolieren
    Teilen Sie das Deployment in kleinere Teile auf, um zu ermitteln, welche bestimmte Komponente die Ausnahme auslöst, da der Fehler selbst keine Details liefert.
In der Praxis

Wie Serpent das verhindert

Serpent bewahrt vollständige Deployment-Logs und -Historie pro Aufgabe auf, sodass ein wiederholtes Deployment nach einer UNKNOWN_EXCEPTION bis zum genauen fehlgeschlagenen Versuch zurückverfolgbar ist, statt in einem einmaligen CI-Lauf verloren zu gehen. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Fehlgeschlagene Deployments vor einem erneuten Versuch vollständig bereinigen
Überprüfen Sie, ob ein früheres fehlgeschlagenes oder teilweises Deployment Metadaten in einem inkonsistenten Zustand hinterlassen hat, bevor Sie den nächsten Release versuchen.
Deployments klein genug halten, um schnell zu bisektieren
Bevorzugen Sie kleinere, häufigere Deployments gegenüber seltenen, großen, damit ein undurchsichtiger Fehler wie dieser schnell isoliert werden kann, indem die Änderung aufgeteilt wird.
Jeden Deployment-Versuch mit ausreichend Detail protokollieren, um ihn mit einer Wiederholung zu vergleichen
Bewahren Sie Deployment-IDs und vollständige Ergebnisprotokolle für jeden Versuch auf, damit Sie bei einem erfolgreichen erneuten Versuch vergleichen können, was sich geändert hat, statt einfach weiterzumachen.
Häufige Fragen

UNKNOWN_EXCEPTION, erklärt

Sollte ich einen Salesforce-Supportfall für UNKNOWN_EXCEPTION eröffnen?
Wenn erneutes Versuchen und Isolieren der Komponente das Problem nicht löst, ja. Da der Fehler keine Details enthält, kann der Salesforce-Support oft den zugrunde liegenden Stack Trace einsehen, den das Deployment-Ergebnis nicht offenlegt.
Welche Informationen sollte ich vor der Kontaktaufnahme mit dem Support sammeln?
Die Deployment- oder Job-ID, den genauen Zeitstempel des Fehlschlags und den Instanznamen der Org; der Support kann den zugrunde liegenden Fehler anhand der Deployment-ID nachschlagen, selbst wenn die kundenseitige Meldung generisch ist.
Bedeutet UNKNOWN_EXCEPTION, dass derselbe Fehler immer wieder auftritt?
Nicht unbedingt. Ein bedeutender Anteil dieser Fehlschläge sind vorübergehende Plattformprobleme, die sich von selbst klären, weshalb ein erneuter Versuch immer der erste Schritt ist, kein letztes Mittel.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.