Guide des développeurs pour les services de données Sun Cluster 3.1 10/03

Redémarrage du service de données

La fonction restart_service() est appelée par decide_restart_or_failover() pour tenter de redémarrer le service de données sur le même noeud. Cette fonction effectue les opérations suivantes :


function restart_service
{

        # Pour redémarrer le service de données, d'abord vérifier que le
        # service de données lui-même est toujours enregistré auprès du gestionnaire
        # de processus.
        pmfadm -q $PMF_TAG
        if [[ $? -eq 0 ]]; then
                # La BALISE du service de données étant toujours enregistrée
                # auprès du gestionnaire de processus, arrêter le service de données
                # et le redémarrer.

                # Obtenir le nom de la méthode d'Arrêt et la valeur de DÉLAI_ARRÊT
                # pour cette ressource.
                DÉLAI_ARRÊT=`scha_resource_get -O STOP_TIMEOUT \
                        -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ
                MÉTHODE_ARRÊT=`scha_resource_get -O STOP \
                        -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ
                hatimerun -t $STOP_TIMEOUT $RT_BASEDIR/$STOP_METHOD \
                        -R $RESOURCE_NAME -G $RESOURCEGROUP_NAME \
                        -T $RESOURCETYPE_NAME

                if [[ $? -ne 0 ]]; then
                        logger-p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
                                “${ARGV0} Stop method failed.”
                        return 1
                fi

                # Obtenir le nom de la méthode de DÉMARRAGE et la valeur
                # de DÉLAI_DÉMARRAGE pour cette ressource.
                DÉLAI_DÉMARRAGE=`scha_resource_get -O START_TIMEOUT \
                        -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ
                MÉTHODE_DÉMARRAGE=`scha_resource_get -O START \
                        -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ
                hatimerun -t $START_TIMEOUT $RT_BASEDIR/$START_METHOD \
                        -R $RESOURCE_NAME -G $RESOURCEGROUP_NAME \
                        -T $RESOURCETYPE_NAME

                if [[ $? -ne 0 ]]; then
                        logger-p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
                                “${ARGV0} Start method failed.”
                        return 1
                fi


        else
                # L'absence de la BALISE du service de données
                # signifie que celui-ci a déjà dépassé le nombre
                # maximum de nouvelles tentatives autorisé par le gestionnaire
                # des processus. Ne pas essayer de le redémarrer
                # mais tenter de le basculer
                # sur un autre noeud du serveur.
                scha_control -O GIVEOVER -G $RESOURCEGROUP_NAME \
                        -R $RESOURCE_NAME
        fi

        return 0
}