ALL_OR_NONE_OPERATION_ROLLED_BACK oplossen in Salesforce-deployments
Eén slecht record in een batch die met allOrNone=true is verzonden, draaide elk record in die batch terug, inclusief de geldige.
Treedt op bij: bulk-DML-operaties, data loads en Apex-testsetupWat het betekent
ALL_OR_NONE_OPERATION_ROLLED_BACK betekent dat een DML-operatie is verzonden met allOrNone op true, en dat minstens één record in de batch de validatie niet doorstond, waardoor Salesforce de hele batch terugdraaide in plaats van de individueel geldige records vast te leggen. Dit is het verwachte gedrag van allOrNone, geen bug, maar het kan kostbaar zijn bij grote batches.
Het gebeurt overal waar bulk-DML draait: een Database.insert(records, true)-aanroep in Apex, een Bulk API-job met de allOrNone-jobinstelling ingeschakeld, of een Data Loader-sessie met "Insert null values" en gedeeltelijk slagen beide uitgeschakeld. Eén slechte rij ergens in de batch trekt de hele transactie mee onderuit.
Veelvoorkomende oorzaken
De oplossing
- Valideer records aan de clientzijde vóór verzendingControleer voor het verzenden van de batch de voor de hand liggende foutcondities, verplichte velden en picklistwaarden, aan de hand van de regels van het object.
- Stel allOrNone=false in tijdens migratierondesVoer migraties uit met allOrNone=false zodat individuele mislukkingen de rest van de batch niet blokkeren, en controleer en herstel daarna de mislukte records.
- Splits grote batches op in kleinere groepenSplits een grote data-operatie op in kleinere batches, zodat één slecht record slechts een klein deel van de totale lading beïnvloedt.
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(); } }
Hoe Serpent dit voorkomt
De dataoperaties van Serpent worden opgedeeld in stukken en gevalideerd als onderdeel van de pipeline, zodat één slecht record in een migratie vroeg opvalt tegen een kleine batch in plaats van een grote batch diep in een deployment terug te draaien. Zie de bibliotheek met Salesforce-deploymentfouten.

Preventie
Gerelateerde fouten
ALL_OR_NONE_OPERATION_ROLLED_BACK, uitgelegd
Start gratis. Geen creditcard, geen installatie, geen verplichting.
Binnen 15 minuten ingericht. Geen DevOps-aanwerving nodig.
