Transactions MDM
Une transaction dans MDM est composée de plusieurs transactions de stockage. Par exemple, une opération simple de mise à jour peut impliquer plusieurs instances de stockage : le stockage du conteneur de données maître et le stockage du rapport de mise à jour.
Si une transaction MDM comprend le stockage maître ou le stockage de préparation, la transaction MDM concerne généralement les deux stockages.
Les transactions sont également utilisées pour isoler les opérations de lecture. Par conséquent, toutes les opérations de lecture (même celles comprenant des requêtes en lecture seule) doivent être effectuées dans un contexte de transaction.
Cet article s'adresse aux versions 6.0 et supérieures de la solution MDM de Talend.
Utilisation d'appels de rollback ou de commit
Pour les opérations en lecture seule :
- Si vous pouvez initier des opérations en lecture seule et lire tous les enregistrements que vous souhaitez, appelez un commit. Le commit indique à MDM que l'opération en lecture seule a été réussie et que l'utilisateur peut lire tous les résultats dans la requête.
- Si vous rencontrez un problème lorsque vous lisez les résultats de la requête, vous devriez appeler un rollback. Cet appel peut être utilisé pour journaliser le fait qu'une requête a été à l'origine d'un problème et que MDM n'est pas capable de fournir des résultats.
API REST pour les opérations de transaction
Une interface MDM REST est disponible pour les opérations de transaction.
Toutes les requêtes HTTP doivent être authentifiées. Autrement dit, un accès ouvert ou anonyme à cette API REST est impossible. Vous devez fournir les bons identifiants (authentification HTTP simple) dans la requête HTTP.
Vous pouvez trouver ci-dessous la liste de toutes les ressources API REST pour les opérations de transaction :
Ressource |
Description |
---|---|
GET /talendmdm/services/transactions |
Liste toutes les transactions actives avec leurs identifiants |
PUT/talendmdm/services/transactions |
Crée une nouvelle transaction (et obtient son UUID) |
POST/talendmdm/services/transactions/{id} |
Commite une transaction |
DELETE/talendmdm/services/transactions/{id} |
Effectue un rollback |
Pour plus d'informations concernant la documentation des ressources de MDM REST de Talend, consultez le Guide utilisateur de l'interface Talend MDM Web User.
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é). |