SYS_PQ_5 — Procédure de gestion des erreurs et résilience
Procédure légère. Détails dans
error_handler, la branche d'échec d'agent_call, et les ADR. [CORPUS]
Objet
Décrire comment le système capture, signale et isole les erreurs (exceptions de workflow et échecs LLM), sans cascade ni blocage. [CORPUS]
Domaine d'application
Tous les workflows critiques (Error Workflow error_handler configuré) + spécifiquement agent_call (branche d'échec LLM). Exclusion : les chaînes de livraison de notif ne portent pas error_handler (anti-récursion ADR-034). [CORPUS]
Références
- Workflows :
07§B2.8 (error_handler), §B2.11 (branche d'échec). [CORPUS] - ADR-034 — anti-récursion (Coupe 1 + Coupe 2). [CORPUS]
- ADR-029 D5 — sur échec,
agent_calltrace puis rend{success:false}sans throw ; la notifllm_errordédiée remplace l'exception générique. [CORPUS] - P-6g-1 (storm récursif), P-6g-2 (Error Workflow ≠ run manuel), P-6h-1/2 (import-over, pinData). [CORPUS]
- Pas de norme externe applicable. [STANDARD]
Définitions
- Error Workflow : workflow déclenché par l'Error Trigger natif n8n quand un workflow référent lève une exception non gérée (settings). [CORPUS]
- Fire-and-forget : un appel d'observabilité (log/notif) en
onError:continueRegularOutput— un échec ne masque ni ne casse le flux. [CORPUS] - Soft-error D2 : HTTP 200 + corps invalide → traité comme un échec. [CORPUS]
- D1 (retour propre) :
agent_callrend{success:false}sans throw →error_handlerne fire pas. [CORPUS]
Responsabilités (RACI)
| Activité | Workflow critique | error_handler | agent_call (branche échec) | notify_system | Gérant |
|---|---|---|---|---|---|
| Lever/propager l'exception | R | C | — | — | — |
Capturer + router workflow_error | A | R | — | C | I |
| Gérer l'échec LLM (D1/D2) | — | — | R | C | I |
| Garantir le non-blocage | C | R | R | C | — |
| Configurer Error Workflow (settings) | — | — | — | — | R/A |
Lire system-errors + agir | — | — | — | — | R |
Déroulement (qui/quoi/quand/où)
A) Exception non gérée
- Un workflow critique lève une exception (prod/integrated). [CORPUS]
- L'Error Trigger déclenche
error_handler. [CORPUS] error_handlerrécupère le contexte →notify_systemeventworkflow_error→system-errors. [CORPUS]- Son nœud notif est en
onError:continueRegularOutput(Coupe 2) → pas de relance. [CORPUS]
B) Échec LLM (agent_call, 6h)
- HTTP non-2xx (sortie erreur) ou soft-error D2 (garde
throwdansParse response,onError:continueErrorOutput) → convergence surBuild error log payload(1 item exactement). [CORPUS] success=false, tokens/coût null,latency=Date.now()−t0. [CORPUS]Call log_llm_call (erreur)[fire-and-forget] → ligne télémétriesuccess=false. [CORPUS]Prepare llm_error payload→Call notify_system (llm_error)[fire-and-forget] →system-errors. [CORPUS]Error outputterminal{success:false, content:null, error}— ne rejoint jamais la sortie succès, pas de throw (D1). [CORPUS]
Enregistrements associés
- Lignes
telemetrie.appels_llmsuccess=false(cf.SYS_FQ_2). [CORPUS] - Messages
system-errors. [CORPUS]
Annexes
- Test (6/6, 6h) : nominal 0 notif ; échec HTTP →
success=false+ 1 notif ; une seule notif ; soft-error D2 routée ; fire-and-forget prouvé (log_llm_callcassé → 0 ligne, notif+sortie OK) ; compteurf=4/t=4. [CORPUS] - Pour tester
error_handler: provoquer l'erreur en mode integrated (Manual Trigger → Execute Workflow(cible)avec input fautif), jamais en run manuel éditeur (P-6g-2). [CORPUS]