El método Stop proporciona un enfoque en dos hileras para detener el servicio de datos: un enfoque ordenado, o suave, que utiliza una señal de SIGTERM a través de pmfadm, y un enfoque duro o brusco, con la señal de SIGKILL. El método Stop obtiene el valor Stop_timeout (la cantidad de tiempo en el que el método Stop debe volver). Stop asigna entonces el 80 % de este tiempo a una parada suave y el 15 % a una parada brusca (el 5 % queda reservado), como se muestra a continuación.
STOP_TIMEOUT=`scha_resource_get -O STOP_TIMEOUT -R $RESOURCE_NAME \ -G $RESOURCEGROUP_NAMÈ ((SMOOTH_TIMEOUT=$STOP_TIMEOUT * 80/100)) ((HARD_TIMEOUT=$STOP_TIMEOUT * 15/100))
El método Stop utiliza pmfadm -q para verificar que el daemon de DNS esté en ejecución. Si es así, Stop utiliza primero pmfadm -s para enviar una señal TERM para terminar el proceso de DNS. Si esta señal no logra terminar el proceso pasado un 80 % del valor de tiempo de espera, Stop envía una señal SIGKILL. Si esta señal tampoco puede finalizar el proceso en un 15 % del valor de tiempo de espera, el método registra un mensaje de error y sale con estado de error.
Si pmfadm termina el proceso, el método registra un mensaje que indica que el proceso se ha detenido y sale de forma satisfactoria.
Si el proceso de DNS no está en ejecución, el método registra un mensaje de que no está en ejecución y sale de forma satisfactoria de todas formas. El siguiente ejemplo de código muestra cómo Stop utiliza pmfadm para detener el proceso de DNS.
# Ver si in.named está en ejecución y, en caso afirmativo, terminarlo. if pmfadm -q $PMF_TAG; then # Enviar una señal SIGTERM al servicio de datos y esperar un 80 % # del valor total del tiempo de espera. pmfadm -s $RESOURCE_NAME.named -w $SMOOTH_TIMEOUT TERM if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ “${ARGV0} No se ha podido detener HA-DNS con SIGTERM; \ Reintentarlo con SIGKILL” # Dado que el servicio de datos no se ha detenido con una señal SIGTERM # usar SIGKILL ahora y esperar otro 15 % del valor de tiempo de espera total. pmfadm -s $PMF_TAG -w $HARD_TIMEOUT KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] “${ARGV0} No se ha podido detener HA-DNS; salida NO SATISFACTORIA” exit 1 fi fi else # El servicio de datos no se está ejecutando actualmente. Registrar un mensaje y # salir con resultado satisfactorio. logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ “No se ha podido iniciar HA-DNS” # Aunque HA-DNS no esté en ejecución, salir con resultado satisfactorio para # no poner el recurso del servicio de datos en el estado STOP_FAILED. exit 0 fi # Se ha podido detener satisfactoriamente DNS. Registrar un mensaje y salir con # resultado satisfactorio. logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ “HA-DNS se ha detenido satisfactoriamente” exit 0 |