Complément : Algorithme de reprise UNDO-REDO

Introduction

L'algorithme suivant permet d'assurer une reprise après panne qui annule et rejoue les transactions adéquates.

1
1. SOIT deux listes REDO et UNDO
2
 1a. Initialiser la liste REDO à vide
3
 1b. Initialiser la liste UNDO avec toutes les transactions en cours au dernier point de contrôle
4
5
2. FAIRE une recherche en avant dans le journal, à partir du point de contrôle
6
 2a. SI une transaction T est commencée ALORS  ajouter T à UNDO
7
 2b. SI une transaction T est terminée avec succès alors déplacer T de UNDO à REDO 
8
9
3. QUAND la fin du journal est atteinte
10
 3a. Annuler les transactions de la liste UNDO (reprise en arrière)
11
 3b. Rejouer les transactions de la liste REDO (reprise en avant)
12
13
4. TERMINER la reprise et redevenir disponible pour de nouvelles instructions

Exemple

États d'une transaction au moment d'une panne
  • Transactions de type T1

    Non prises en compte par l'algorithme.

  • Transactions de type T2

    Ajoutées à la liste UNDO (étape 1b) puis déplacée vers REDO (étape 2b) puis rejouée (étape 3b).

  • Transactions de type T3

    Ajoutées à la liste UNDO (étape 1b) puis annulée (étape 3a).

  • Transactions de type T4

    Ajoutées à la liste UNDO (étape 2a) puis déplacée vers REDO (étape 2b) puis rejouée (étape 3b).

  • Transactions de type T5

    Ajoutées à la liste UNDO (étape 2a) puis annulée (étape 3a).