Débogage des problèmes de transaction
Lister les transactions actives
Si vous activez la catégorie Log4j com.amalto.core.server, le serveur affichera toutes les 20 secondes le nombre de transactions actives gérées actuellement et toutes les transactions actives avec leurs identifiants.
Modifier le niveau de log de la transaction MDM pour déboguer
Modifiez le fichier <MDM_ROOT>conf/log4j.xml et assurez-vous que la configuration suivante existe :
<category name="com.amalto.core.server.MDMTransaction">
<priority value="DEBUG"/>
</category>
Dans ce mode, MDM traque les créations des transactions et fournit plus d'informations sur les transactions problématiques lorsqu'elles sont détectées.
Ajouter le filtre TransactionsGuard
Modifiez le fichier <Tomcat_Path>/webapps/talendmdm/WEB-INF/web.xml et ajoutez les lignes suivantes :
<filter>
<filter-name>transactionGuardFilter</filter-name>
<filter-class>com.amalto.core.servlet.TransactionsGuardFilter</filter-class>
<init-param>
<param-name>throw.exceptions.BEFORE</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>throw.exceptions.AFTER</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>transactionGuardFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Vous ajouterez et activerez ainsi un nouveau filtre servlet à l'application Web.
Ce filtre vérifie avant et après chaque requête HTTP si une transaction est attachée au process HTTP en cours.
Si le filtre trouve une transaction, y compris une trace d'appel de création de transaction si le débogage est activé sur la transaction MDM, le filtre journalise un message d'avertissement. Pour plus d'informations, consultez Modifier le niveau de log de la transaction MDM pour déboguer.
Les paramètres du filtre sont décrits ci-dessous :
Paramètre du filtre |
Description |
---|---|
throw.exceptions.BEFORE |
Si ce paramètre est défini à true, le filtre envoie une exception avant l'exécution de la requête (en retournant une erreur HTTP 500). |
throw.exceptions.AFTER |
Si ce paramètre est défini à true, le filtre envoie une exception si une transaction est attachée au processus en cours après l’exécution de la requête (en retournant une erreur HTTP 500 même si la requête s'est exécutée correctement, ce qui n'est pas recommandé). |