From 7c9f29546c13375e786d60d52873c93f0e8ace2b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 18 Mar 2001 20:27:11 +0000 Subject: [PATCH] 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. --- src/bin/pg_ctl/pg_ctl.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/bin/pg_ctl/pg_ctl.sh b/src/bin/pg_ctl/pg_ctl.sh index 6d575c0d64..dc3a628252 100755 --- a/src/bin/pg_ctl/pg_ctl.sh +++ b/src/bin/pg_ctl/pg_ctl.sh @@ -8,7 +8,7 @@ # # # 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 if [ $op = "start" -o $op = "restart" ];then + oldpid="" if [ -f $PIDFILE ];then - echo "$CMDNAME: It seems another postmaster is running. Trying to start postmaster anyway." 1>&2 - pid=`sed -n 1p $PIDFILE` + echo "$CMDNAME: Another postmaster may be running. Trying to start postmaster anyway." 1>&2 + oldpid=`sed -n 1p $PIDFILE` fi unset logopt @@ -330,11 +331,15 @@ if [ $op = "start" -o $op = "restart" ];then eval '$po_path' '$POSTOPTS' $logopt '&' - if [ -f $PIDFILE ];then - if [ "`sed -n 1p $PIDFILE`" = "$pid" ];then - echo "$CMDNAME: cannot start postmaster" 1>&2 - echo "Examine the log output." 1>&2 - exit 1 + # if had an old lockfile, check to see if we were able to start + if [ -n "$oldpid" ];then + sleep 1 + if [ -f $PIDFILE ];then + 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 -- GitLab