RGM llama al método Monitor_stop para detener la ejecución de dns_probe cuando el servicio de datos de ejemplo se pone fuera de línea.
En esta sección, se describen las partes más importantes del método Monitor_start de la aplicación de ejemplo, aunque no se describen las funciones comunes a todos los métodos de rellamada como, por ejemplo, la función parse_args(). Esta sección tampoco describe el uso de la función syslog(). Las funciones comunes se describen en Funciones comunes para todos los métodos.
Para obtener un listado completo del método Monitor_stop, consulte Listado de código del método Monitor_stop.
Este método utiliza PMF (pmfadm) para comprobar si el análisis se está ejecutando y, si es así, detenerlo.
El método Monitor_stop utiliza pmfadm -q para ver si el análisis está en ejecución y, si así fuera, utiliza pmfadm -s para detenerlo. Si el análisis ya está detenido, el método sigue saliendo de forma satisfactoria, lo que garantiza la idempotencia del método.
Asegúrese de utilizar la señal KILL con pmfadm para detener el análisis y no una señal que pueda ocultarse, como TERM. De lo contrario, el método Monitor_stop puede bloquearse indefinidamente y, al final, se puede agotar el tiempo de espera. El motivo es que el método PROBE llama a scha_control() cuando es necesario reiniciar el servicio de datos o realizar una recuperación ante fallos. Cuando scha_control() llama a Monitor_stop como parte del proceso de establecimiento en línea del servicio de datos, si Monitor_stop utiliza una señal que pueda ocultarse, este método Monitor_stop se bloquea mientras espera que se complete scha_control() y scha_control() se bloquea también a la espera de que se complete Monitor_stop.
# See if the monitor is running, and if so, kill it. 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 # could successfully stop the monitor. Log a message. logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} Monitor for resource " $RESOURCE_NAME \ " successfully stopped" fi fi exit 0
El método Monitor_stop registra un mensaje de error si no puede detener el método PROBE. RGM cambia el estado del servicio de datos a MONITOR_FAILED en el nodo principal, lo que puede provocar una situación de emergencia en el nodo.
Monitor_stop no debería salir antes de que se haya detenido el análisis.