Résolution des blocages de collaboration
Un blocage est une situation dans laquelle au moins deux processus ne peuvent poursuivre leur exécution car chacun attend l'exécution des autres processus. Les blocages sont un effet secondaire indésirable du contrôle des accès concurrents assuré par l'isolement des événements dans une collaboration. Pour plus d'informations sur l'isolement des événements, voir Collaboration Development Guide.
La figure 75 illustre un blocage entre deux groupes de collaborations actifs, entraînant la séquence d'événements suivante :
- A l'heure T1, la collaboration A1 reçoit un événement E1, puis effectue un appel de service auprès de la collaboration B2 et envoie un objet métier enfant pour E1. La collaboration A1 attente la fin de l'appel de service.
- A l'heure T2, la collaboration B1 reçoit un événement E2, puis effectue un appel de service auprès de la collaboration A2 et envoie un objet métier enfant pour E2. La collaboration A2 attente la fin de l'appel de service.
- A l'heure T3, la collaboration B2 attente la collaboration B1,
car B2 et B1 sont associées au même port et l'événement provenant de B1 a été envoyé avant l'arrivée de l'événement pour B2.
- A l'heure T4, la collaboration A2 attend la collaboration A1,
car A2 et A1 sont associées au même port et l'événement provenant de
A1 a été envoyé avant l'arrivée de l'événement pour B1.
A ce stade, aucune collaboration ne peut progresser.
Remarque :
Une association de port est constituée du type d'objet métier et du nom du connecteur. Pour plus d'informations sur les associations de port, voir Collaboration Development Guide.
Figure 75. Blocage entre groupes de collaborations
Cette section traite des points suivants :
Procédure de détection d'un blocage de collaboration
Procédure de détection des blocages dans un groupe de collaborations
Procédure de correction d'un blocage de collaboration
Procédure de détection d'un blocage de collaboration
Par défaut, le système InterChange Server Express effectue une détection automatique des blocages lorsque vous démarrez InterChange Server Express. Toutefois, au moment de cette détection, le démarrage d'InterChange Server Express peut être retardé si un groupe de collaborations contient de nombreux objets de collaboration car InterChange Server Express doit examiner tous les objets du groupe afin de déterminer si un blocage s'est produit. Cette opération peut donc ralentir le démarrage même si aucun blocage ne s'est produit.
Vous pouvez configurer le système InterChange Server Express afin qu'il n'effectue pas cette détection des blocages. Dans ce cas, le système lance les groupes de collaboration sans rechercher préalablement les blocages. Le démarrage d'InterChange Server Express est donc plus rapide. Mais si la détection des blocages n'est pas effectuée et qu'un blocage s'est produit, cela peut provoquer l'échec d'un événement envoyé ensuite à une collaboration.
System Manager ne permet pas de définir le paramètre de configuration DEADLOCK_DETECTOR_CHECK. Pour définir ce paramètre de configuration, vous devez éditer le fichier InterchangeSystem.cfg et modifier la valeur du paramètre dans ce fichier.
Pour configurer la détection des blocages sur le système InterChange Server Express, appliquez la procédure suivante :
- Ouvrez le fichier InterchangeSystem.cfg. Les lignes suivantes définissent le paramètre DEADLOCK_DETECTOR_CHECK dans le fichier :
<tns:name>DEADLOCK_DETECTOR_CHECK</tns:name>
<tns:value xml:space="preserve">false</tns:name>
- Pour effectuer la détection des blocages, modifiez la valeur false en true.
- Pour ne pas effectuer la détection des blocages, définissez la valeur par false.
Procédure de détection des blocages dans un groupe de collaborations
Pour rechercher un blocage dans un groupe de collaborations, effectuez l'une des opérations suivantes :
- Dans System Manager, cliquez, à l'aide du bouton droit de la souris, sur la collaboration du groupe en cours d'exécution, puis cliquez sur Diagnostics.
Une fenêtre apparaît avec le message suivant :
Les tests de diagnostic ont été exécutés sur cette collaboration :
Ce message est suivi de l'un des résultats suivants :
- Dans le fichier InterchangeSystem.log, recherchez l'erreur suivante au moment où les collaborations bloquées ont été démarrées :
Erreur 11135 : l'activation du groupe de la collaborationnom_collaboration peut entraîner un blocage potentiel avec un ou plusieurs groupes de collaborations existants et est par conséquent interdite.
Cette erreur indique uniquement une situation de blocage potentielle. Les messages d'information précédant l'erreur 11135 identifient les groupes de collaborations actifs qui risquent d'entrer dans une situation de blocage.
Procédure de correction d'un blocage de collaboration
Pour corriger un blocage de collaboration, appliquez la procédure suivante :
- Arrêtez graduellement toutes les autres collaborations.
- Arrêtez le serveur immédiatement. Pour plus d'informations sur l'arrêt du système InterChange Server
Express, voir Arrêt d'InterChange Server
Express.
- Redémarrez le système. Au démarrage du système, une collaboration arrêtée, ayant causé le blocage, démarre automatiquement et souscrit à nouveau à tous les objets métier qu'elle prend en charge. Les objets métier ayant entraîné le blocage des collaborations sont renvoyés.
Les blocages étant temporellement dépendants, les collaborations ne peuvent pas entrer dans une autre situation de blocage. Il est peu probable que vous ayez la même charge sur le serveur et la même séquence d'isolement que lorsque le blocage s'est produit dans le système.
- Une fois le système redémarré, arrêtez les collaborations concernées et associez à nouveau les ports afin que cette situation ne se reproduise pas.
Procédure de prévention des blocages de collaboration
Vous pouvez prévenir les blocages de collaboration en configurant les paramètres de relance après blocage, dans l'onglet Base de données de l'écran de configuration du serveur, dans System Manager.
Pour configurer le mécanisme de relance après blocage, appliquez la procédure suivante :
- Dans System Manager, cliquez, à l'aide du bouton droit de la souris, sur le serveur, dans la vue Gestion de composant InterChange Server, puis cliquez sur Modifier la configuration.
L'outil d'édition s'ouvre, dans lequel vous pouvez éditer le fichier InterchangeSystem.cfg.
- Cliquez sur l'onglet Base de données. Une boîte de dialogue apparaît dans laquelle vous pouvez entrer les paramètres requis pour la configuration de la base de données au niveau du système (voir figure 76).
Figure 76. Ecran Modifier la configuration, onglet Base de données
- Dans la zone Nombre maximal de nouvelles tentatives après blocage, entrez le nombre maximal de relances que doit effectuer le serveur si un blocage se produit.
- Dans la zone Intervalle entre nouvelles tentatives après blocage, entrez la durée en secondes après laquelle le système peut tenter une nouvelle relance.
