Zo los je UNKNOWN_EXCEPTION op in Salesforce-deployments

Salesforce gaf een generieke, ongecategoriseerde fout terug, die meestal wijst op een probleem aan de orgkant in plaats van de eigen metadata van de deployment.

Verschijnt tijdens: elke deploy- of DML-operatie, als catch-all wanneer niets specifiekers van toepassing is

Wat het betekent

UNKNOWN_EXCEPTION is de catch-all foutcode van Salesforce voor fouten die niet passen bij een specifiek, gedocumenteerd fouttype. Het duidt vaak op een probleem op orgniveau, een tijdelijk platformprobleem, een onafgehandelde exception diep in een managed package, of een metadataconflict dat te ongewoon is om te categoriseren, in plaats van iets wat mis is met het deploymentpakket zelf.

Omdat de code zelf geen diagnostische details bevat, behandel het als een signaal om naar buiten te kijken, naar instancestatus, package-internals en eerdere gedeeltelijke deployments, in plaats van aan te nemen dat de oplossing ergens in de metadata zit die je zojuist hebt geschreven.

Diagnose

Veelvoorkomende oorzaken

Tijdelijk platformprobleem
Een tijdelijk Salesforce-infrastructuurprobleem of timeout tijdens de deployment, los van de inhoud van de deployment.
Onafgehandelde exception binnen een managed package
De interne logica van een managed package gooit een exception die niet met een specifieke foutcode aan subscriber-orgs wordt blootgesteld.
Beschadigde of conflicterende metadatastatus
De doel-org heeft metadata in een inconsistente staat, vaak overgebleven van een eerdere mislukte of gedeeltelijke deployment die niet is opgeruimd.

De oplossing

  1. Probeer de deployment opnieuw
    Veel UNKNOWN_EXCEPTION-fouten zijn tijdelijk; een simpele retry lost ze op zonder enige wijziging.
  2. Controleer de Salesforce Trust-status voor de doelinstance
    Bevestig dat er geen actief incident of onderhoudsvenster is op de instance van de org voordat je verder gaat met troubleshooten.
    https://status.salesforce.com/instances/<your-instance>
  3. Deploy een kleinere subset om de oorzaak te isoleren
    Splits de deployment op in kleinere delen om te achterhalen welke specifieke component de exception veroorzaakt, aangezien de fout zelf geen details geeft.
In de praktijk

Hoe Serpent dit voorkomt

Serpent houdt volledige deploymentlogs en -geschiedenis per taak bij, zodat een opnieuw geprobeerde deployment na een UNKNOWN_EXCEPTION te herleiden is tot de exacte poging die mislukte, in plaats van verloren te gaan in een eenmalige CI-run. Bekijk de bibliotheek met Salesforce-deploymentfouten.

Metadata en data in één deploymentflow in Serpent

Preventie

Ruim mislukte deployments volledig op voordat je het opnieuw probeert
Controleer of een eerdere mislukte of gedeeltelijke deployment geen metadata in een inconsistente staat heeft achtergelaten voordat je de volgende release probeert.
Houd deployments klein genoeg om snel te kunnen bisecten
Geef de voorkeur aan kleinere, frequentere deployments boven zeldzame, grote deployments, zodat een ondoorzichtige fout zoals deze snel te isoleren is door de wijziging te splitsen.
Log elke deploymentpoging met genoeg detail om te vergelijken met een retry
Bewaar deployment-ID's en volledige resultaatlogs voor elke poging, zodat je, als een retry slaagt, kunt vergelijken wat er is veranderd in plaats van gewoon verder te gaan.
Veelgestelde vragen

UNKNOWN_EXCEPTION, uitgelegd

Moet ik een Salesforce-supportcase openen voor UNKNOWN_EXCEPTION?
Als retryen en het isoleren van de component het niet oplost, ja. Omdat de fout geen details bevat, kan Salesforce-support vaak de onderliggende stack trace zien die het deploymentresultaat niet toont.
Welke informatie moet ik verzamelen voordat ik contact opneem met support?
Het deployment- of job-ID, het exacte tijdstip van de fout, en de instancenaam van de org; support kan de onderliggende fout opzoeken aan de hand van het deployment-ID, zelfs als de klantgerichte melding generiek is.
Betekent UNKNOWN_EXCEPTION dat dezelfde fout zich altijd zal herhalen?
Niet noodzakelijk. Een aanzienlijk deel van deze fouten zijn tijdelijke platformproblemen die vanzelf verdwijnen, wat waarom retryen altijd de eerste stap is, en geen laatste redmiddel.

Start gratis. Geen creditcard, geen installatie, geen verplichting.

Binnen 15 minuten ingesteld. Geen DevOps-aanwerving nodig.

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.