Give postmaster enough time to update the pidfile before checking to

see if it's been updated.  Skip the whole mess if we didn't see any
old pidfile.
This commit is contained in:
Tom Lane 2001-03-18 20:27:11 +00:00
parent af6e88a9cf
commit 7c9f29546c

View File

@ -8,7 +8,7 @@
# #
# #
# IDENTIFICATION # IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.18 2001/02/08 19:39:24 petere Exp $ # $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.19 2001/03/18 20:27:11 tgl Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -293,9 +293,10 @@ if [ $op = "stop" -o $op = "restart" ];then
fi # stop or restart fi # stop or restart
if [ $op = "start" -o $op = "restart" ];then if [ $op = "start" -o $op = "restart" ];then
oldpid=""
if [ -f $PIDFILE ];then if [ -f $PIDFILE ];then
echo "$CMDNAME: It seems another postmaster is running. Trying to start postmaster anyway." 1>&2 echo "$CMDNAME: Another postmaster may be running. Trying to start postmaster anyway." 1>&2
pid=`sed -n 1p $PIDFILE` oldpid=`sed -n 1p $PIDFILE`
fi fi
unset logopt unset logopt
@ -330,11 +331,15 @@ if [ $op = "start" -o $op = "restart" ];then
eval '$po_path' '$POSTOPTS' $logopt '&' eval '$po_path' '$POSTOPTS' $logopt '&'
if [ -f $PIDFILE ];then # if had an old lockfile, check to see if we were able to start
if [ "`sed -n 1p $PIDFILE`" = "$pid" ];then if [ -n "$oldpid" ];then
echo "$CMDNAME: cannot start postmaster" 1>&2 sleep 1
echo "Examine the log output." 1>&2 if [ -f $PIDFILE ];then
exit 1 if [ "`sed -n 1p $PIDFILE`" = "$oldpid" ];then
echo "$CMDNAME: cannot start postmaster" 1>&2
echo "Examine the log output." 1>&2
exit 1
fi
fi fi
fi fi