So beheben Sie CIRCULAR_DEPENDENCY in Salesforce-Deployments
Zwei oder mehr Metadatenkomponenten verweisen aufeinander, sodass Salesforce keine gültige Deployment-Reihenfolge ermitteln kann.
Tritt auf bei: Metadata-Deployment-Validierung, bevor ein Test ausgeführt wirdWas das bedeutet
CIRCULAR_DEPENDENCY tritt auf, wenn zwei Komponenten, meist Apex-Klassen, benutzerdefinierte Metadatensätze oder Record Types, jeweils erfordern, dass die andere zuerst existiert. Die Metadata API deployt Komponenten in Abhängigkeitsreihenfolge, und ein Zyklus bedeutet, dass es keine gültige Reihenfolge gibt, die beide erfüllt.
Apex ist der häufigste Auslöser, weil der Compiler Klassenverweise zur Deployment-Zeit auflöst: Wenn die Signatur von Klasse A auf Klasse B verweist und die Signatur von Klasse B auf Klasse A, kann keine von beiden allein zuerst kompiliert werden, sondern nur gemeinsam in derselben Deployment-Transaktion.
Häufige Ursachen
Die Lösung
- Deployen Sie zuerst einen Stub, um den Zyklus zu durchbrechenDeployen Sie eine Seite des Paares mit einer minimalen oder leeren Implementierung und deployen Sie die eigentliche Logik anschließend in einem zweiten Durchgang.
- Kombinieren Sie beide Komponenten in einem einzigen DeploymentBündeln Sie die voneinander abhängigen Klassen oder Metadaten in einem Deployment, sodass Salesforce die gesamte Menge zusammen auflöst, statt sie einzeln zu ordnen.
sf project deploy start --source-dir force-app/main/default/classes/ClassA.cls force-app/main/default/classes/ClassB.cls - Refaktorieren, um den gegenseitigen Verweis zu entfernenExtrahieren Sie die gemeinsame Logik in eine dritte Klasse oder Schnittstelle, sodass keine der ursprünglichen Komponenten direkt von der anderen abhängt.
Wie Serpent das verhindert
Serpent verfolgt, welche Komponenten eine Aufgabe betrifft, und markiert voneinander abhängige Komponenten, bevor sie auf separate Aufgaben aufgeteilt werden, sodass ein zirkuläres Paar gemeinsam deployt wird, statt auf halbem Weg zu scheitern. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Prävention
Verwandte Fehler
CIRCULAR_DEPENDENCY, erklärt
Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.
In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.
