Accès exclusif au magasin de données
Un moteur de messagerie place un verrou sur son magasin de données afin de bénéficier d'un accès exclusif à ses données. Ce processus garantit l'intégrité des données contenues dans le magasin de données. Plusieurs facteurs peuvent avoir une incidence sur le verrouillage d'accès exclusif.
Chaque moteur de messagerie place un verrou exclusif sur son magasin de données. Pendant son exécution, le moteur de messagerie maintient ce verrou afin d'assurer l'intégrité des données contenues dans le magasin de données.
Le verrou du magasin de données utilise les verrous de base de données et fait donc partie intégrante du magasin de données. Le système de gestion de base de données relationnelle (SGBDR) s'appuie sur l'infrastructure JDBC ou le protocole TCP/IP sous-jacent pour indiquer l'échec d'un moteur de messagerie ou d'un serveur d'applications. Le système SGBDR peut alors libérer automatiquement les verrous du magasin de données dans la base de données.
La fréquence de vérification de l'activité de la connexion réseau entre un moteur de messagerie et le serveur de base de données pour son magasin de données est un facteur important pour permettre le basculement rapide d'un moteur de messagerie sur un autre serveur dans un cluster. Lorsque des moteurs de messagerie exécutés dans un cluster sont configurés pour basculer sur d'autres serveurs en cas de défaillance, il peut s'avérer nécessaire de réduire les paramètres des éléments actifs TCP/IP sur le serveur de base de données pour réduire le délai de détection de l'échec d'un moteur de messagerie.
La table SIBOWNER du magasin de données conserve le verrou sous forme de paire d'identificateurs uniques sur une seule ligne. Lorsqu'il démarre, un moteur de messagerie utilise ces deux identificateurs pour obtenir et conserver son verrou exclusif :
- MEUUID
- Identificateur unique d'un moteur de messagerie, qui reste identique à chaque arrêt ou redémarrage du moteur de messagerie.
- INCUUID
- Identificateur d'incarnation d'un moteur de messagerie, qui change à chaque fois que le moteur de messagerie démarre.
Ces identificateurs déterminent quel est le moteur de messagerie qui utilise un magasin de données. Ils déterminent également si une instance en cours d'exécution d'un moteur de messagerie a conservé son verrou exclusif pendant son exécution.
L'autre table utilisée dans la procédure de verrouillage du magasin de données est la table SIBOWNERO. Cette table n'est utilisée que pour le verrouillage et ne stocke pas de données dans sa colonne EMPTY_COLUMN.
Lorsqu'un moteur de messagerie démarre, il obtient d'abord un verrou exclusif sur la table SIBOWNERO. Le moteur de messagerie obtient ensuite un verrou exclusif sur la table SIBOWNER et commence à en vérifier le contenu. Le moteur de messagerie s'attend à trouver une ligne de données unique dans la table ou aucune donnée. Si une ligne existe, le moteur de messagerie démarre uniquement si le paramètre MEUUID qu'il détecte correspond à son propre identificateur unique. Si le MEUUID ne correspond pas, le moteur de messagerie ne parvient pas à démarrer et génère le message d'erreur CWSIS1535 dans le journal des erreurs du serveur.
Si la table SIBOWNER ne contient aucune ligne, le moteur de messagerie en insère une qui contient ses propres identificateurs MEUUID et INCUUID. Si la table contient une seule ligne et que MEUUID correspond à l'identificateur unique du moteur de messagerie, ce dernier met à jour le paramètre INCUUID avec son propre identificateur d'incarnation et tente d'obtenir un nouveau verrou de table partagé sur la table SIBOWNER. Le moteur de messagerie vérifie à nouveau que l'identificateur INCUUID correspond à son propre identificateur d'incarnation, au cas où une autre instance du même moteur de messagerie démarrerait au même moment sur un autre serveur. Si tel n'est pas le cas, le moteur de messagerie ne démarre pas.
Le verrou de table partagé sur la table SIBOWNER est conservé jusqu'à l'arrêt du moteur de messagerie et des régénérations périodiques sont effectuées pour que le verrou soit toujours appliqué. Le verrou de table exclusif sur la table SIBOWNERO est ensuite libéré. Si le moteur de messagerie ne peut pas régénérer le verrou sur la table SIBOWNER ou qu'il découvre à partir des données de la table SIBOWNER qu'une autre incarnation du moteur de messagerie utilise le magasin de données, il génère les messages CWSIS1594 et CWSIS1519 dans le journal des erreurs du serveur et s'arrête immédiatement.
Dans certains cas, lorsque le moteur de messagerie configuré pour être exécuté dans un cluster ne peut pas obtenir le verrou, il s'arrête et ne peut pas être basculé sur un autre serveur du cluster. Dans ce cas, vous devez consulter les journaux d'erreurs, car l'arrêt du moteur de messagerie indique qu'il est dangereux ou impossible de démarrer avec la configuration actuelle du magasin de données. Pour la description des situations dans lesquelles des incidents peuvent se produire et des solutions possibles, voir Traitement des incidents liés au verrouillage de l'accès exclusif au magasin de données.