Rejouer les tâches échouées
Quand utiliser ce runbook
- Des tâches de la file d'attente sont en erreur permanente
- Après la correction d'une cause racine, les tâches doivent être rejouées
- Un lot de tâches a échoué suite à un incident transitoire
Étape 1 : Identifier les tâches en erreur
# Lister les tâches en erreur
# Adapter selon le schéma de la file d'attente
mysql -e "SELECT id, type, error_message, created_at FROM queue_table WHERE status = 'error' ORDER BY created_at DESC LIMIT 50;"
Étape 2 : Analyser les erreurs
Regrouper les erreurs par type :
- Erreurs de connexion (API externe) → probablement transitoires, rejeu possible directement
- Erreurs de validation (données incorrectes) → nécessitent une correction avant rejeu
- Deadlocks → rejeu direct possible après résolution de la concurrence
Étape 3 : Rejouer les tâches
# Remettre les tâches en erreur dans la file d'attente
# Adapter la commande selon le mécanisme de rejeu du projet
mysql -e "UPDATE queue_table SET status = 'pending', error_message = NULL WHERE status = 'error' AND type = 'TYPE_CONCERNÉ';"
:::caution Attention Ne pas rejouer des tâches dont les données sources ont changé sans vérifier l'idempotence du traitement. :::
Étape 4 : Valider le rejeu
- Relancer le processeur de files si nécessaire
- Surveiller les tâches rejouées pour confirmer qu'elles passent en succès
- Vérifier les effets de bord en base de données
- Comparer les résultats avec les données attendues
Étape 5 : Documenter l'incident
- Noter la cause racine
- Le nombre de tâches affectées
- La correction appliquée
- Les précautions pour éviter la récurrence