OSDN Git Service

Give postmaster enough time to update the pidfile before checking to
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Mar 2001 20:27:11 +0000 (20:27 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Mar 2001 20:27:11 +0000 (20:27 +0000)
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

index 6d575c0..dc3a628 100755 (executable)
@@ -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