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 :
Elle détermine si le service de données est toujours enregistré dans le gestionnaire de processus. Si c'est le cas, la fonction :
Obtient le nom de la méthode d'Arrêt ainsi que la valeur Délai_arrêt du service de données.
Utilise hatimerun pour lancer la méthode d' Arrêt pour le service de données, avec transmission de la valeur Délai_arrêt .
Obtient le nom de la méthode de Démarrage ainsi que la valeur Délai_démarrage pour le service de données (si celui-ci s'arrête correctement).
Utilise hatimerun pour lancer la méthode de Démarrage pour le service de données, avec transmission de la valeur Délai_démarrage.
Si le service de données n'est plus enregistré dans le gestionnaire de processus, cela signifie qu'il a dépassé le nombre maximum de nouvelles tentatives autorisées par le gestionnaire et que la fonction scha_control() est appelée avec l'option GIVEOVER afin de basculer le service de données vers un autre noeud.
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 } |