Gestionnaires de transactions

Un gestionnaire de transactions (TM) est une instance d’un journal. Dans KTM, les objets TM spécifient le journal et certaines fonctionnalités du TM. Il existe généralement de nombreux objets TM sur un nœud particulier. Les gestionnaires de ressources (RMs) doivent être associés à une tm spécifique. Il existe trois types de machines virtuelles :

  • Tm volatile, qui n’a pas de journal.
  • Tm standard, qui a un journal et est utilisé pour coordonner les transactions d’une ou plusieurs machines virtuelles.
  • Gestionnaire de transactions supérieur.

Gestionnaires de transactions volatiles

Une TM volatile est une TM pour les machines virtuelles en lecture seule ou volatile. Il n’a pas de journal et ne conserve pas l’état des transactions entre les redémarrages du système.

Gestionnaires de transactions

Les machines virtuelles ont un journal, une ou plusieurs machines virtuelles durables ou volatiles, ou les deux. Le tm conserve l’état d’une transaction entre les redémarrages du système jusqu’à ce que les transactions soient terminées. Un modèle présumé d’abandon est utilisé, de sorte que les transactions qui étaient actives, mais qui n’étaient pas préparées lorsque l’objet TM est arrêté sont restaurées. Lorsque vous ouvrez une tm pour la première fois, vous devez récupérer le tm en appelant la fonction RecoverTransactionManager.

Gestionnaires de transactions supérieurs

Une TM supérieure est une TM pour d’autres machines virtuelles. Il coordonne les transactions. Il émet également des notifications TRANSACTION_NOTIFY_PREPARE au Gestionnaire de transactions du noyau (KTM). Un exemple de TM supérieur est microsoft Distributed Transaction Coordinator (DTC). Cette capacité est fournie avec une responsabilité supplémentaire en matière de temps de récupération. Pendant la récupération, rm doit d’abord appeler la fonction OpenEnlistment pour rouvrir l’inscription. Elle doit également remettre (ou remettre à nouveau) le résultat de la transaction si la transaction a été validée ; il est gratuit de fournir un résultat en appelant la fonction CommitTransaction ou la fonction RollbackTransaction. Cette obligation ne se termine pas tant qu’elle n’a pas reçu un événement de notification TRANSACTION_NOTIFY_COMMIT_COMPLETE ou TRANSACTION_NOTIFY_ROLLBACK_COMPLETE associé. Si une tm supérieure ne parvient pas à effectuer ces opérations au moment de la récupération, la KTM nettoie toutes les transactions qui n’ont pas reçu de résultats à la fin de la phase de récupération. Toutefois, cela peut entraîner des résultats de transaction incohérents.

Fonctions du Gestionnaire de transactions

Les fonctions suivantes sont utilisées avec les gestionnaires de transactions.

Fonction Description
CreateTransactionManager Crée un objet TM (Transaction Manager) et retourne un handle avec l’accès spécifié.
GetCurrentClockTransactionManager Obtient une valeur d’horloge virtuelle auprès d’un gestionnaire de transactions.
GetTransactionManagerId Obtient un identificateur pour le gestionnaire de transactions spécifié.
OpenTransactionManager Ouvre un gestionnaire de transactions existant.
RecoverTransactionManager Récupère l’état d’un gestionnaire de transactions à partir de son fichier journal.
RollforwardTransactionManager Récupère l’état d’un gestionnaire de transactions de son fichier journal à la valeur d’horloge virtuelle spécifiée.