Le RGM appelle la méthode d'Arrêt_détecteur afin d'arrêter l'exécution de sonde_dns lorsque le service de données modèle est mis hors ligne.
Cette rubrique décrit les principaux éléments de la méthode d'Arrêt_détecteur pour l'application modèle. Cette rubrique ne décrit pas la fonctionnalité commune à toutes les méthodes de rappel, telles que la fonction parse_args () et l'obtention de la fonction syslog, décrites dans la rubriqueFonctionnalité commune à toutes les méthodes.
Pour l'affichage complet de la méthode d'Arrêt_détecteur, reportez-vous à la rubrique Méthode d'Arrêt_détecteur.
Cette méthode utilise le gestionnaire de processus (pmfadm) pour vérifier si la sonde tourne et, le cas échéant, pour l'arrêter.
La méthode d'Arrêt_détecteur utilise pmfadm -q pour déterminer si la sonde fonctionne et, le cas échéant, pmfadm -s pour l'arrêter. Si la sonde est déjà arrêtée, la méthode se ferme correctement, ce qui garantit l'idempotence de la méthode.
# Voir si le détecteur tourne et, le cas échéant, le tuer. if pmfadm -q $PMF_TAG; then pmfadm -s $PMF_TAG KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} Could not stop monitor for resource " \ $RESOURCE_NAME exit 1 else # Arrêt du détecteur fructueux. Consigner un message. logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} Monitor for resource " $RESOURCE_NAME \ " successfully stopped" fi fi exit 0 |
veillez à utiliser le signal KILL avec pmfadm pour arrêter la sonde et pas un signal masquable tel que TERM. Dans le cas contraire, la méthode d'Arrêt_détecteur peut se bloquer indéfiniment et finit par dépasser le délai imparti. Le motif de ce problème réside dans l'appel par la méthode de SONDE de la fonction scha_control() lorsqu'il est nécessaire de redémarrer ou de basculer le service de données. Lorsque scha_control() appelle Arrêt_détecteur dans le cadre du processus de mise du service de données hors ligne, si Arrêt_détecteur utilise un signal masquable, il se bloque en attendant que la fonction scha_control() s'arrête et scha_control() se bloque en attendant qu' Arrêt_détecteur s'arrête.
La méthode d'Arrêt_détecteur consigne un message d'erreur si elle ne peut pas arrêter la méthode de SONDE. Le RGM fait passer le service de données modèle à l'état ÉCHEC_CONTRÔLE sur le noeud primaire, ce qui peut créer une panique au niveau du noeud.
Arrêt_détecteur ne doit pas se fermer avant l'arrêt de la sonde.