Cdiff functions.ksh
*** /workspace/neilga/ohacds-ids/webrev/usr/src/cmd/ha-services/gds-agents/ids/functions.ksh- Thu Apr 24 01:39:14 2008
--- functions.ksh Fri Apr 18 06:08:15 2008
*** 396,406 ****
# therefore we'll perform our own.
if [ "${CALLER}" = "SMF" ]
then
smf_wait_for_online
! rc=?
fi
else
# SCMSGS
# @explanation
# The specified Informix Server failed to start.
--- 396,406 ----
# therefore we'll perform our own.
if [ "${CALLER}" = "SMF" ]
then
smf_wait_for_online
! rc=$?
fi
else
# SCMSGS
# @explanation
# The specified Informix Server failed to start.
*** 657,666 ****
--- 657,672 ----
smf_wait_for_online()
{
debug_message "Function: smf_wait_for_online - Begin"
${SET_DEBUG}
+ # In order to ensure that the SMF service is really online, we need
+ # to check getstate() and check_ids(). However, we need to enforce
+ # an SMF_EXIT_ERR_CONFIG if we are just about to timeout. If we do not
+ # do this, then svc.startd will try to restart the SMF service three
+ # times. Essentially we need Sun Cluster to do that.
+
MAX_START_TIMEOUT=`/usr/bin/expr ${START_TIMEOUT} \* 95 \/ 100`
SECONDS=0
while [ "${SECONDS}" -lt "${MAX_START_TIMEOUT}" ]
do
*** 674,684 ****
if [ "${rc}" -eq 0 ]
then
SECONDS=${MAX_START_TIMEOUT}
else
! sleep 5
fi
done
debug_message "Function: smf_wait_for_online - End"
return ${rc}
--- 680,691 ----
if [ "${rc}" -eq 0 ]
then
SECONDS=${MAX_START_TIMEOUT}
else
! rc=${SMF_EXIT_ERR_CONFIG}
! sleep 2
fi
done
debug_message "Function: smf_wait_for_online - End"
return ${rc}
*** 721,733 ****
SHMID=`/usr/bin/echo ${SHMID} | /usr/xpg4/bin/tr 'm' ' '`
# As the initial ipcs -mcopbZ is only a snapshot in time, Informix
# may have already cleaned up. Therefore the following attempt to remove a
# shared memory segment may fail with "not found". To prevent misleading
! # console messages stdout/stderr is redirected to ${LOGFILE}.
! /usr/bin/ipcrm -z ${ZONENAME} -m ${SHMID} > ${LOGFILE}
debug_message "Informix SHMID: ${SHMID} - removed"
flag=deleted
fi
--- 728,740 ----
SHMID=`/usr/bin/echo ${SHMID} | /usr/xpg4/bin/tr 'm' ' '`
# As the initial ipcs -mcopbZ is only a snapshot in time, Informix
# may have already cleaned up. Therefore the following attempt to remove a
# shared memory segment may fail with "not found". To prevent misleading
! # console messages stdout/stderr is redirected to /dev/null.
! /usr/bin/ipcrm -z ${ZONENAME} -m ${SHMID} > /dev/null 2>&1
debug_message "Informix SHMID: ${SHMID} - removed"
flag=deleted
fi