Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

19.2. Administration des transactions

19.2.1. Naviguer et gérer les transactions

Le CLI prend en charge la capacité de naviguer et de manipuler les enregistrements des transactions. Cette fonctionnalité est fournie par l'interaction entre le gestionnaire de transactions et l'API de gestion de JBoss EAP 6.
Le gestionnaire de transactions stocke des informations sur chaque transaction en attente et les participants impliqués dans la transaction, dans un stockage persistant appelé object store. L'API de gestion expose le store objet sous forme de ressource appelée log-store. Une opération API nommée probe lit les journaux de transactions et crée un noeud pour chaque journal. Vous pouvez invoquer la commande probe manuellement, quand vous souhaitez réactualiser le log-store. Il est normal pour les journaux de transaction d'apparaitre ou de disparaitre rapidement.

Exemple 19.1. Réactualiser le log store

Cette commande réactualise le log store des groupes de serveurs qui utilisent le profil par défaut default dans un domaine géré. Dans le cas d'un serveur autonome, supprimer profile=default de la commande.
/profile=default/subsystem=transactions/log-store=log-store/:probe

Exemple 19.2. Voir toutes les transactions préparées

Pour voir toutes les transactions préparées, commencer par réactualiser le log store (voir Exemple 19.1, « Réactualiser le log store »), puis exécuter la commande suivante, qui fonctionne de la même manière qu'une commande ls de système de fichiers.
ls /profile=default/subsystem=transactions/log-store=log-store/transactions
Chaque transaction est visible, ainsi que son identifiant unique. Les opérations individuelles peuvent être exécutées pour une transaction individuelle (voir Gérer une transaction).

Gérer une transaction

Voir des attributs de transaction.
Pour voir des informations sur une transaction, comme son nom JNDI, son nom de produit EIS ou sa version, ou encore son statut, utiliser la commande CLI :read-resource.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-resource
Voir tous les participants à une transaction.
Chaque journal de transaction contient un élément enfant nommé participants. Utiliser la commande CLI read-resource sur cet élément pour voir les participants des transactions. Les participants sont identifiés par leur nom JNDI.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=java\:\/JmsXA:read-resource
Le résultat doit ressembler à ceci :
{
   "outcome" => "success",
   "result" => {
       "eis-product-name" => "HornetQ",
       "eis-product-version" => "2.0",
       "jndi-name" => "java:/JmsXA",
       "status" => "HEURISTIC",
       "type" => "/StateManager/AbstractRecord/XAResourceRecord"
   }
}
Le statut du résultat affiché ici est dans un état HEURISTIC et est susceptible d'être recouvré. Voir Recouvrement d'une transaction. pour plus d'informations.
Dans certains cas, il est possible de créer des enregistrements orphelins dans l'object store, c-a-d XAResourceRecords, qui n'a pas d'enregistrement de transaction correspondante dans le journal. Par exemple, la ressource XA s'était préparée mais avait échoué avant le TM enregistré et est inaccessible à l'API de gestion du domaine. Pour accéder à de tels enregistrements, vous devez définir l'option de gestion expose-all-logs à true. Cette option n'est pas sauvegardée dans le modèle de gestion et est restaurée à false quand le serveur redémarre à nouveau.
/profile=default/subsystem=transactions/log-store=log-store:write-attribute(name=expose-all-logs, value=true)
Supprimer une transaction.
Chaque journal de transaction supporte une opération :delete pour effacer l'enregistrement qui représente la transaction.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:delete
Recouvrement d'une transaction.
Chaque participant de transaction supporte le recouvrement par la commande CLI :recover.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:recover

Recouvrement des transactions heuristiques et des participants

  • Si le statut de la transaction est HEURISTIC, l'opération de recouvrement change l'état en PREPARE et déclenche un recouvrement.
  • Si l'un des participants de la transaction est heuristique, l'opération de recouvrement tente de reprendre l'opération commit (validation) à nouveau. En cas de succès, le participant est retiré du journal des transactions. Vous pouvez vérifier cela en exécutant à nouveau l'opération :probe sur le log-store et en vérifiant que le participant n'est plus inscrit. Si c'est le dernier participant, la transaction sera également supprimée.
Réactualiser le statut de la transaction qui a besoin d'être recouvrée.
Si une transaction a besoin d'être recouvrée, vous pourrez utiliser la commande CLI :refresh pour vous assurer qu'elle a toujours besoin d'être recouvrée, avant de tenter le recouvrement.
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:refresh
Voir les statistiques de transaction

Si les statistiques de Transaction manager sont activées, vous pouvez consulter les statistiques à propos du gestionnaire de transactions et du sous-système de transaction. Veuillez consulter Section 19.1.2, « Configurer le Transaction Manager (TM) (ou gestionnaire de transactions) » pour plus d'informations sur l'activation des statistiques de Transaction manager.

Vous pouvez consulter les statistiques soit par la console de gestion basée-web, soit par l'interface CLI. de gestion Dans la console de gestion basée-web, les statistiques de transaction seront disponibles via RuntimeStatusSubsystemsTransactions. Les statistiques de transaction sont disponibles pour chaque serveur dans un domaine géré, également. Pour voir le statut d'un autre serveur, sélectionner Change Server situé en haut à gauche du menu, et sélectionner un serveur de la liste.
Le tableau suivant affiche chaque statistique disponible, sa description et la commande CLI de gestion pour afficher le statistique.

Tableau 19.4. Les statistiques de sous-système de transaction

Statistique Description CLI Command
Total
Le nombre total de transactions exécutées par le gestionnaire de transactions sur ce serveur.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-transactions,include-defaults=true)
Validé
Le nombre de transactions validées exécutées par le gestionnaire de transactions sur ce serveur.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-committed-transactions,include-defaults=true)
Abandonné
Le nombre de transactions interrompues exécutées par le gestionnaire de transactions sur ce serveur.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-aborted-transactions,include-defaults=true)
Délai expiré
Le nombre de transactions expirées exécutées par le gestionnaire de transactions sur ce serveur.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-timed-out-transactions,include-defaults=true)
Heuristiques
Pas disponible dans la console de gestion. Nombre de transactions dans un état heuristique.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-heuristics,include-defaults=true)
Transactions In-Flight
Pas disponible dans la console de gestion. Nombre de transactions commencées non achevées.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-inflight-transactions,include-defaults=true)
Origine de l'échec - Applications
Le nombre de transactions échouées dont l'origine de l'échec était une application.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-application-rollbacks,include-defaults=true)
Origine de l'échec - Ressources
Le nombre de transactions échouées dont l'origine de l'échec était une ressource.
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-resource-rollbacks,include-defaults=true)
ID Participant
L'ID du participant.
/host=master/server=server-one/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-children-names(child-type=participants)
Liste de toutes les transactions
La liste complète des transactions.
/host=master/server=server-one/subsystem=transactions/log-store=log-store:read-children-names(child-type=transactions)