Sun Cluster: Guía del desarrollador de los servicios de datos del sistema operativo Solaris

Parada del supervisor

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


Precaución – Precaución –

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.