Die restart_service()-Funktion wird von decide_restart_or_failover () aufgerufen, um den Datendienst an demselben Knoten neu zu starten. Mit dieser Funktion wird die folgende Logik ausgeführt:
Es wird ermittelt, ob der Datendienst weiterhin unter PMF registriert ist. Falls der Dienst weiterhin registriert ist, führt die Funktion die folgenden Aktionen aus:
Sie ruft den Stop-Methodennamen und den Stop_timeout-Wert für den Datendienst ab
Sie verwendet hatimerun zum Starten der Stop-Methode für den Datendienst und übergibt den Stop_timeout-Wert
Wenn der Datendienst erfolgreich angehalten wird, ruft sie den Start-Methodennamen und den Start_timeout-Wert für den Datendienst ab
Sie verwendet hatimerun, um die Start-Methode für den Datendienst zu starten und den Wert Start_timeout zu übergeben
Wenn der Datendienst unter PMF nicht mehr registriert ist, hat der Datendienst wohl die maximale Anzahl der unter PMF zulässigen Wiederholversuche überschritten. Die scha_control()-Funktion wird mit der Option GIVEOVER aufgerufen, um einen Failover des Datendienstes an einen anderen Knoten durchzuführen.
function restart_service { # To restart the data service, first verify that the # data service itself is still registered under PMF. pmfadm -q $PMF_TAG if [[ $? -eq 0 ]]; then # Since the TAG for the data service is still registered under # PMF, first stop the data service and start it back up again. # Obtain the Stop method name and the STOP_TIMEOUT value for # this resource. STOP_TIMEOUT=`scha_resource_get -O STOP_TIMEOUT \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ STOP_METHOD=`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 # Obtain the START method name and the START_TIMEOUT value for # this resource. START_TIMEOUT=`scha_resource_get -O START_TIMEOUT \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ START_METHOD=`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 # The absence of the TAG for the dataservice # implies that the data service has already # exceeded the maximum retries allowed under PMF. # Therefore, do not attempt to restart the # data service again, but try to failover # to another node in the cluster. scha_control -O GIVEOVER -G $RESOURCEGROUP_NAME \ -R $RESOURCE_NAME fi return 0 }