Guide des développeurs pour les services de données Sun Cluster pour SE Solaris

Méthode Monitor_stop

Le RGM appelle la méthode Monitor_stop afin d'arrêter l'exécution de dns_probe lorsque le service de données modèle est mis hors ligne.

Cette rubrique décrit les principaux éléments de la méthode Monitor_stop pour l'application modèle. Elle 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 rubrique Fonctionnalité commune à toutes les méthodes.

Pour l'affichage complet de la méthode Monitor_stop, reportez-vous à la rubrique Méthode Monitor_stop.

Présentation de la méthode Monitor_stop

Elle utilise la fonction PMF (pmfadm) pour voir si l'analyse est en cours et, le cas échéant, pour l'arrêter.

Arrêt du détecteur

La méthode Monitor_stop 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, l'arrêter. 
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


Attention – Attention –

veillez à utiliser le signal KILL avec pmfadm pour arrêter la sonde et non pas un signal masquable tel que TERM. Sinon la méthode Monitor_stop peut se bloquer indéfiniment et finit par dépasser le délai imparti. Le problème réside dans l'appel par la méthode Probe 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 Monitor_stop dans le cadre du processus de mise du service de données hors ligne, si Monitor_stop utilise un signal masquable, il se bloque en attendant que la fonction scha_control() s'arrête et scha_control() se bloque en attendant que Monitor_stop s'arrête.


État de Monitor_stop à la fermeture

La méthode Monitor_stop consigne un message d'erreur si elle ne peut pas arrêter la méthode PROBE. Le RGM fait passer le service de données modèle à l'état MONITOR_FAILED sur le nœud primaire, ce qui peut créer une panique au niveau du nœud.

Monitor_stop ne doit pas se fermer avant l'arrêt de la sonde.