RGM invoca el 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.
Esta sección describe los principales fragmentos del método Monitor_stop para la aplicación de ejemplo, pero no las funciones comunes a todos los métodos de rellamada, como la función parse_args() ni la obtención del recurso syslog; éstos describen en Funciones comunes para todos los métodos.
Para una lista completa del método Monitor_stop, consulte Método Monitor_stop.
Este método utiliza el recurso del supervisor de procesos (pmfadm) para ver si el análisis está en ejecución y, en caso de que lo esté, 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.
# Consultar si el supervisor está en ejecución. Si es así, terminarlo. if pmfadm -q $PMF_TAG; then pmfadm -s $PMF_TAG KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} No se puede detener el supervisor del recurso " \ $RESOURCE_NAME exit 1 else # se ha detenido satisfactoriamente el supervisor. Registrar un mensaje. logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "${ARGV0} "${ARGV0} Supervisor del recurso " $RESOURCE_NAME \ " detenido satisfactoriamente" fi fi exit 0 |
Asegúrese de usar la señal de KILL con pmfadm para detener el análisis y no una señal enmascarable, como TERM. En caso contrario, el método Monitor_stop puede quedar indefinidamente bloqueado hasta agotar el tiempo de espera. El motivo de este problema es que el método PROBE invoca scha_control() cuando hay que reiniciar o realizar una operación de recuperación de fallos del servicio de datos. Cuando scha_control() invoca Monitor_stop dentro del proceso de poner el servicio de datos fuera de línea, si Monitor_stop utiliza una señal enmascarable, se queda bloqueado esperando que scha_control() finalice y scha_control() se bloquea, esperando que Monitor_stop termine.
El método Monitor_stop registra un mensaje de error si no puede detener el método PROBE. RGM pone el servicio de datos de ejemplo en el estado MONITOR_FAILED en el nodo primario, lo que puede enviar un aviso grave al nodo.
Monitor_stop no debería salir antes de que se haya detenido el análisis.