Aller au contenu principal

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

  1. Relancer le processeur de files si nécessaire
  2. Surveiller les tâches rejouées pour confirmer qu'elles passent en succès
  3. Vérifier les effets de bord en base de données
  4. 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