Thread: pg_ctl problem (was Re: BeOS Patch)

pg_ctl problem (was Re: BeOS Patch)

From
Tom Lane
Date:
Cyril VELTER <cyril.velter@libertysurf.fr> writes:
> pg_ctl output when no shm segments left

> pg_ctl: It seems another postmaster is running.  Trying to start postmaster 
> anyway.
> pg_ctl: cannot start postmaster  <-------- not true !!!
> Examine the log output.
> DEBUG:  database system was interrupted at 2001-03-18 12:01:57 CET
> DEBUG:  CheckPoint record at (0, 20204684)
> DEBUG:  Redo record at (0, 20204684); Undo record at (0, 0); Shutdown TRUE
> DEBUG:  NextTransactionId: 5384; NextOid: 153313
> DEBUG:  database system was not properly shut down; automatic recovery in 
> progress...
> DEBUG:  ReadRecord: record with zero len at (0, 20204748)
> DEBUG:  redo is not required
> DEBUG:  database system is in production state   

Looking at the pg_ctl script, it seems this must be coming from
   eval '$po_path' '$POSTOPTS' $logopt '&'
   if [ -f $PIDFILE ];thenif [ "`sed -n 1p $PIDFILE`" = "$pid" ];then    echo "$CMDNAME: cannot start postmaster" 1>&2
 echo "Examine the log output." 1>&2    exit 1       fi   fi
 

which is clearly not giving the postmaster enough time to remove or
rewrite the pidfile.  Shouldn't we put a "sleep 1" in there before
the "if"?
        regards, tom lane


Re: pg_ctl problem (was Re: BeOS Patch)

From
Bruce Momjian
Date:
At a minimum, you should do a test, and if it does not yet exist, do a
sleep, then the test again.

> Cyril VELTER <cyril.velter@libertysurf.fr> writes:
> > pg_ctl output when no shm segments left
> 
> > pg_ctl: It seems another postmaster is running.  Trying to start postmaster 
> > anyway.
> > pg_ctl: cannot start postmaster  <-------- not true !!!
> > Examine the log output.
> > DEBUG:  database system was interrupted at 2001-03-18 12:01:57 CET
> > DEBUG:  CheckPoint record at (0, 20204684)
> > DEBUG:  Redo record at (0, 20204684); Undo record at (0, 0); Shutdown TRUE
> > DEBUG:  NextTransactionId: 5384; NextOid: 153313
> > DEBUG:  database system was not properly shut down; automatic recovery in 
> > progress...
> > DEBUG:  ReadRecord: record with zero len at (0, 20204748)
> > DEBUG:  redo is not required
> > DEBUG:  database system is in production state   
> 
> Looking at the pg_ctl script, it seems this must be coming from
> 
>     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
>         fi
>     fi
> 
> which is clearly not giving the postmaster enough time to remove or
> rewrite the pidfile.  Shouldn't we put a "sleep 1" in there before
> the "if"?
> 
>             regards, tom lane
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> 


--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: pg_ctl problem (was Re: BeOS Patch)

From
Peter Eisentraut
Date:
Tom Lane writes:

>     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
>         fi
>     fi
>
> which is clearly not giving the postmaster enough time to remove or
> rewrite the pidfile.  Shouldn't we put a "sleep 1" in there before
> the "if"?

This is probably the best we can do.

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/



Re: pg_ctl problem (was Re: BeOS Patch)

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
>> which is clearly not giving the postmaster enough time to remove or
>> rewrite the pidfile.  Shouldn't we put a "sleep 1" in there before
>> the "if"?

> This is probably the best we can do.

Actually, the whole thing should only happen if we found a pre-existing
PIDFILE anyway.  Will fix.
        regards, tom lane