Transactions
Une transaction est un objet qui définit une unité logique de travail. La transaction est active tant qu’il existe un handle référençant la transaction et qu’elle est considérée comme active si la transaction n’a pas encore été validée ou restaurée. Si une transaction est créée et que tous ses descripteurs ont été fermés avant qu’une validation ou une restauration ne se produise, la transaction est restaurée.
Prenons le cas d’un client transactionnel en mode utilisateur qui crée une transaction pour l’étendue de ses opérations, puis effectue des mises à jour sur un ou plusieurs gestionnaires de ressources. Il se produit ce qui suit :
Le client appelle la fonction CreateTransaction pour créer la transaction et reçoit un descripteur de cette transaction comme valeur de retour.
La transaction peut être ouverte ou héritée par n’importe quel nombre de processus ; chaque processus est donc impliqué dans la transaction. L’échec de l’un de ces processus entraîne l’abandon de la transaction.
Cette transaction n’est peut-être pas encore persistante. Seules les transactions ayant atteint l’état préparé doivent être récupérées sur les défaillances du système si la transaction utilise la journalisation présumée-abandonner.
Le client doit transmettre une transaction au gestionnaire des ressources de manière explicite.
Le client effectue toutes ses opérations transactionnelles avec un ou plusieurs services RMs, tels que les systèmes de fichiers traités.
Le client appelle la fonction CommitTransaction .
Le gestionnaire des ressources reçoit les notifications de KTM pour préparer et valider ses données.
Transactions et threads
Les transactions ne sont pas les mêmes que les threads. Plusieurs threads ou processus peuvent faire partie d’une transaction unique. À l’inverse, un thread peut faire partie de plusieurs transactions différentes à différents moments.
Fonctions de transaction
Les fonctions suivantes sont utilisées avec les transactions.
| Fonction | Description |
|---|---|
| CommitTransaction | Demande que la transaction spécifiée soit validée. |
| CommitTransactionAsync | Demande que la transaction spécifiée soit validée. |
| CreateTransaction | Crée un nouvel objet de transaction. |
| GetTransactionInformation | Retourne les informations demandées sur la transaction spécifiée. |
| OpenTransaction | Ouvre une transaction existante. |
| RollbackTransaction | Demande que la transaction spécifiée soit restaurée. |
| RollbackTransactionAsync | Demande que la transaction spécifiée soit restaurée. Cette fonction retourne de manière asynchrone. |
| SetTransactionInformation | Définit les informations de transaction pour la transaction spécifiée. |