Red Hat Training

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

11.7.7. Gérer un résultat heuristique dans une transaction

Cette procédure montre comment gérer un résultat heuristique de transaction à l'aide de l'API Java Transaction (JTA)
Les résultats de transaction heuristique sont rares et ont généralement des causes exceptionnelles. Le mot heuristique signifie «manuellement», et c'est ainsi que ces résultats doivent généralement être traités. Voir Section 11.4.4, « Résultats heuristiques » pour plus d'informations sur les résultats de l'opération heuristique.

Procédure 11.5. Gérer un résultat heuristique dans une transaction

  1. Déterminer la cause

    En général, la cause d'un résultat heuristique pour une transaction est qu'un gestionnaire de ressources a promis qu'il pourrait commettre ou annuler, et il n'a pas pu remplir sa promesse. Cela pouvait être dû à un problème avec un composant de tierce partie, la couche d'intégration entre le composant tiers et la plate-forme EAP 6 ou bien la plate-forme JBoss EAP 6 elle-même.
    De loin, les deux causes les plus communes d'erreurs heuristiques sont des erreurs temporaires situées dans l'environnement ou des erreurs de code liées aux gestionnaires de ressources.
  2. Solution aux échecs temporaires de l'environnement

    Normalement, s'il y a un échec temporaire dans votre environnement, vous le saurez avant d'être au courant de l'erreur heuristique. Il peut s'agir d'une défaillance de réseau ou de matériel, d'une erreur de base de données, d'une panne de courant, d'un hôte ou de tout autre cause.
    En cas de résultat heuristique ayant lieu dans un environnement de test, au cours de test de stress, cela vous fournit des informations sur les points faibles de votre environnement.

    Avertissement

    La plate-forme JBoss EAP 6 restaurera automatiquement les transactions qui ne sont pas dans un état heuristique au moment de la défaillance, mais elle ne tentera pas de restaurer les transactions heuristiques.
  3. Contacter les fournisseurs de gestionnaires de ressources

    Si vous n'expérimentez aucun échec évident dans votre environnement, ou si le résultat heuristique est facilement reproductible, c'est probablement une erreur de codage. Contacter les fournisseurs de tierce partie pour savoir si une solution est disponible. Si vous pensez que le problème est dans le gestionnaire de transactions de la plate-forme JBoss EAP 6 elle-même, veuillez prendre contact avec Red Hat Global Support Services.
  4. Dans un environnement de test, supprimer les logs et démarrez à nouveau la plate-forme JBoss EAP 6.

    Dans un environnement de test, ou bien dans les cas où vous ne vous souciez pas de l'intégrité des données, le fait de supprimer les journaux des transactions et de redémarrer la plate-forme JBoss EAP 6 se débarrasse du résultat heuristique. Les journaux des transactions sont situés dans EAP_HOME/standalone/data/tx-object-store/ pour les serveurs autonomes, ou dans EAP_HOME/domain/servers/SERVER_NAME/data/tx-object-store pour les domaines gérés, par défaut. Dans le cas d'un domaine géré, SERVER_NAME se rapporte au nom du serveur individuel qui participe à un groupe de serveurs.

    Note

    L'emplacement du journal de transactions dépend aussi du store d'objets en usage et des valeurs définies des paramètres oject-store-relative-to et object-store-path. Pour les journaux de système de fichier (journaux en mémoire fantôme standard et les journaux HornetQ), la localisation de direction par défaut est utilisée, mais lorsque vous utilisez un magasin d'objets JDBC, les journaux des transactions sont stockés dans une base de données.
  5. Résoudre le résultat à la main

    Le processus de résolution de résultat à la main dépend des circonstances particulières de l'incident. Normalement, vous aurez besoin de procéder aux étapes suivantes, en les appliquant à votre situation.
    1. Identifier les gestionnaires de ressources impliqués.
    2. Examiner l'état dans le gestionnaire de transactions et dans les gestionnaires de ressources.
    3. Forcer manuellement le nettoyage des journaux et la reconciliation des données dans un ou plusieurs des composants impliqués.
    La façon dont procéder à ces étapes va delà de la portée de ce document.