Differences between version 7 and predecessor to the previous major change of Tme2PC.
Other diffs: Previous Revision, Previous Author
Newer page: | version 7 | Last edited on May 9, 2016 11:05 am | by bdr | Revert |
Older page: | version 6 | Last edited on April 11, 2016 12:45 pm | by bdr | Revert |
version 7
Transactions réparties : validation en 2 étapes (2 Phases Commit)
Préparation
- Voir le cours: protocole 2PC, lire le document d'aide pour le TME 2PC
Installer les fichiers du tme:
- tar zxvf $BD_TOOL/tme-2PC.tgz
- cd tme-2PC
- source config-simjava
- javac -encoding ISO-8859-15 -source 1.4 Exemple1.java
- appletviewer exemple1.html
- régler la vitesse (champ nommé speed) sur 100 environ, puis "run".
- pour les utilisateurs d'Eclipse, vous pouvez aussi lancer l'applet directement dans eclipse (click droit sur le fichier java, puis "run as java applet"
- si appletviewer n'est pas dans le path par défaut, il se trouve dans /usr/lib/jvm/jdk1.8.0_45/bin/appletviewer
Dans les exercices suivants recopier les fichiers java et html :
- cp Exemple1.java ExempleNN.java
- cp exemple1.html exempleNN.html
puis éditer les nouveaux fichiers pour remplacer le nom de la classe Exemple1 par ExempleNN
Veiller à recompiler votre exemple avant chaque exécution car les noms de classes Participant et Coordinateur existent dans plusieurs exercices.
Documentation
Exercice 1 : Prise en main du simulateur
- Dérouler la simulation à faible vitesse (speed entre 100 et 150)
- Expliquer brièvement le fonctionnement du protocole implémenté dans le fichier Exemple1.java
- Comprendre les méthodes utilitaires de la classe Entité : envoyer_message, attendre_message_timeout, panne, date, ...
Exercice 2 : Tolérance aux pannes
Panne d'un participant
Dans un fichier Exemple2a.java, compléter le protocole pour gérer la panne d'un participant avant de s'être déclaré prèt. Suivre le diagramme de la diapo 20 page 10.
- Le coordinateur décide d'abandonner s'il n'a pas reçu tous les votes dans un délai de 300 unités de temps.
- Est-ce que le coordinateur attend que les participants en panne aient repris, avant de répondre à l'application ?
- Que se passe-t-il si un participant qui n'est pas en panne mais trop lent, reçoit la décision d'abandonner alors qu'il n'a pas encore envoyé son vote au coordinateur ?
Dans un fichier Exemple2b.java, compléter le protocole pour gérer la panne d'un participant après s'être déclaré prêt (diapo 21 page 11).
- Le coordinateur répète sa décision à un participant qui la lui demande.
Panne du coordinateur (diapo 22 page 11)
- Dans un fichier Exemple2c.java, compléter le protocole pour gérer la panne du coordinateur après l'étape 1.
Exercice 3 : Gestion des délais
Durée maximum de la validation
- Dans un fichier Exemple3a.java, modifier le protocole pour répondre à l'application dans un délai borné . Quelle sont les réponses possibles du coordinateur à l'application, après un temps D, lorsque la validation n'est pas terminée ?
Réponse anticipée
- Dans un fichier Exemple3b.java, modifier le protocole pour signaler, à l'application, l'abandon de la transaction dès qu'un participant a voté pour un abandon. Que fait le coordinateur lorsqu'il reçoit le prochain commit en provenance de l'application alors que les participants n'ont pas encore fini la validation précédente.
Exercice 4 : Coordonner plusieurs utilisateurs
- Dans un fichier Exemple4.java, modifier le simulateur pour gérer plusieurs transactions provenant simultanément de 2 applications.
Exercice 5: Décision majoritaire
- Dans un fichier Exemple5.java, modifier le protocole pour décider d'une validation dès que la majorité des participants a voté pour une validation. Dans ce cas, que répond le coordinateur aux participants minoritaires qui ont voté pour l'abandon ?
Documentation diverse
- tutorial simjava