Runbook: Relance manuelle d'un job¶
PD-3 CA-05 | Temps max: 5 min | Prérequis: Accès API/CLI
Prérequis¶
- Accès à l'API backend (token d'authentification)
- Job ID du job à relancer
- Le job doit être en état
FAILEDetretryable: true
Diagnostic¶
1. Récupérer le statut du job¶
JOB_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
curl -s "http://localhost:3000/jobs/$JOB_ID" \
-H "Authorization: Bearer $TOKEN" | jq .
Vérifier: - state: doit être FAILED - retryable: doit être true - retryCount: doit être < max retries (généralement 3)
2. Comprendre la cause de l'échec¶
curl -s "http://localhost:3000/jobs/$JOB_ID" \
-H "Authorization: Bearer $TOKEN" | jq '.failedReason'
Résolution¶
Étape 1: Relancer le job via API¶
JOB_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
curl -X POST "http://localhost:3000/jobs/$JOB_ID/retry" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
Réponse attendue (HTTP 202):
{
"jobId": "new-job-id",
"state": "PENDING",
"queueName": "default",
"createdAt": "2024-01-01T00:00:00.000Z"
}
Étape 2: Noter le nouveau job ID¶
Le job original passe en état RETRIED et un nouveau job est créé.
Vérification¶
1. Vérifier l'état du job original¶
Résultat attendu: "RETRIED"
2. Vérifier le nouveau job¶
NEW_JOB_ID="nouveau-job-id-retourné"
curl -s "http://localhost:3000/jobs/$NEW_JOB_ID" \
-H "Authorization: Bearer $TOKEN" | jq .
Résultat attendu: state évolue de PENDING -> RUNNING -> SUCCEEDED
3. Attendre la complétion¶
watch -n 2 "curl -s 'http://localhost:3000/jobs/$NEW_JOB_ID' -H 'Authorization: Bearer $TOKEN' | jq '.state'"
Rollback¶
Le retry crée un nouveau job - pas de rollback nécessaire.
Si le nouveau job échoue aussi:
1. Analyser l'erreur¶
curl -s "http://localhost:3000/jobs/$NEW_JOB_ID" \
-H "Authorization: Bearer $TOKEN" | jq '.failedReason'
2. Si max retries atteint¶
Le job passe en état ABANDONED. Une intervention manuelle est requise: - Corriger la cause root - Créer un nouveau job manuellement via l'API /jobs POST
Cas spéciaux¶
Job non-retryable¶
Si retryable: false, le job ne peut pas être relancé automatiquement.
Solution: Créer un nouveau job manuellement:
curl -X POST "http://localhost:3000/jobs" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "JOB_TYPE",
"data": { ... },
"idempotencyKey": "unique-key"
}'
Max retries atteint¶
Le job passe en ABANDONED. Vérifier les logs pour comprendre pourquoi.
Critère de succès¶
- Job original en état
RETRIED - Nouveau job créé avec
retryCountincrémenté - Nouveau job atteint
SUCCEEDED
Références¶
- PD-3-specification.md: ERR-02 (échec explicite)
- PD-21-specification.md: I-3 (retry explicite)
- TC-ERR-01: Échec d'exécution d'une tâche