ALL_OR_NONE_OPERATION_ROLLED_BACK in Salesforce-Deployments beheben
Ein einziger fehlerhafter Datensatz in einem mit allOrNone=true übermittelten Batch machte alle Datensätze dieses Batches rückgängig, auch die gültigen.
Tritt auf bei: Massen-DML-Operationen, Datenladevorgängen und Apex-TestsetupWas das bedeutet
ALL_OR_NONE_OPERATION_ROLLED_BACK bedeutet, dass eine DML-Operation mit allOrNone auf true übermittelt wurde und mindestens ein Datensatz im Batch die Validierung nicht bestand, sodass Salesforce den gesamten Batch rückgängig machte, statt die einzeln gültigen Datensätze zu übernehmen. Das ist das erwartete Verhalten von allOrNone, kein Fehler, kann bei großen Batches aber teuer werden.
Es tritt überall auf, wo Massen-DML läuft: ein Database.insert(records, true)-Aufruf in Apex, ein Bulk-API-Job mit aktivierter allOrNone-Option, oder eine Data-Loader-Sitzung mit deaktiviertem "Insert null values" und deaktiviertem Teilerfolg. Eine einzige fehlerhafte Zeile irgendwo im Batch reißt die gesamte Transaktion mit sich.
Häufige Ursachen
Die Lösung
- Datensätze clientseitig vor der Übermittlung validierenPrüfen Sie offensichtliche Fehlerbedingungen, Pflichtfelder, Auswahllistenwerte, gegen die Regeln des Objekts, bevor Sie den Batch senden.
- allOrNone=false während Migrationsläufen setzenFühren Sie Migrationen mit allOrNone=false aus, damit einzelne Fehlschläge den Rest des Batches nicht blockieren, und überprüfen und korrigieren Sie anschließend die fehlgeschlagenen Datensätze.
- Große Batches in kleinere Gruppen aufteilenTeilen Sie eine große Datenoperation in kleinere Batches auf, sodass ein einzelner fehlerhafter Datensatz nur einen kleinen Teil der Gesamtladung betrifft.
List<SObject> chunk = new List<SObject>(); for (Integer i = 0; i < records.size(); i++) { chunk.add(records[i]); if (chunk.size() == 200 || i == records.size() - 1) { Database.insert(chunk, false); chunk.clear(); } }
Wie Serpent das verhindert
Die Datenoperationen von Serpent werden im Rahmen der Pipeline in Blöcke aufgeteilt und validiert, sodass ein einzelner fehlerhafter Datensatz in einer Migration früh an einem kleinen Batch auffällt, statt einen großen Batch tief in einem Deployment zurückzurollen. Siehe die Bibliothek der Salesforce-Deploymentfehler.

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