diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-10-01 18:30:25 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-10-01 18:30:25 +0000 |
| commit | c8196c87a76b86c514e1f245624a21ab068c9012 (patch) | |
| tree | fc439824acbb1b749b4a022609a2ac203563a976 /contrib/start-scripts/freebsd | |
| parent | 8bbfa16624e57921712d350b757e11c6258b4561 (diff) | |
| download | postgresql-c8196c87a76b86c514e1f245624a21ab068c9012.tar.gz | |
Adjust postmaster to recognize that a lockfile containing its parent's PID
must be stale. Tweak example startup scripts to not use pg_ctl but launch
the postmaster directly, thereby ensuring that only the postmaster's direct
parent shell will be a postgres-owned process. In combination these should
fix the longstanding problem of the postmaster sometimes refusing to start
during reboot because it thinks the old lockfile is not stale.
Diffstat (limited to 'contrib/start-scripts/freebsd')
| -rw-r--r-- | contrib/start-scripts/freebsd | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/contrib/start-scripts/freebsd b/contrib/start-scripts/freebsd index cee56956ce..528fc776c7 100644 --- a/contrib/start-scripts/freebsd +++ b/contrib/start-scripts/freebsd @@ -6,7 +6,7 @@ # Created through merger of the Linux start script by Ryan Kirkpatrick # and the script in the FreeBSD ports collection. -# $PostgreSQL: pgsql/contrib/start-scripts/freebsd,v 1.3 2003/11/29 19:51:35 pgsql Exp $ +# $PostgreSQL: pgsql/contrib/start-scripts/freebsd,v 1.4 2004/10/01 18:30:21 tgl Exp $ ## EDIT FROM HERE @@ -16,7 +16,7 @@ prefix=/usr/local/pgsql # Data directory PGDATA="/usr/local/pgsql/data" -# Who to run pg_ctl as, should be "postgres". +# Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file @@ -27,24 +27,31 @@ PGLOG="$PGDATA/serverlog" # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -# What to use to start up the postmaster -DAEMON="$prefix/bin/pg_ctl" +# What to use to start up the postmaster (we do NOT use pg_ctl for this, +# as it adds no value and can cause the postmaster to misrecognize a stale +# lock file) +DAEMON="$prefix/bin/postmaster" +# What to use to shut down the postmaster +PGCTL="$prefix/bin/pg_ctl" + +# Only start if we can find the postmaster. test -x "$DAEMON" || exit 0 case $1 in start) - su -l $PGUSER -c "$DAEMON start -D '$PGDATA' -s -l $PGLOG" + su -l $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo -n ' postgresql' ;; stop) - su -l $PGUSER -c "$DAEMON stop -D '$PGDATA' -s -m fast" + su -l $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast" ;; restart) - su -l $PGUSER -c "$DAEMON restart -D '$PGDATA' -s -m fast" + su -l $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w" + su -l $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 ;; status) - su -l $PGUSER -c "$DAEMON status -D '$PGDATA'" + su -l $PGUSER -c "$PGCTL status -D '$PGDATA'" ;; *) # Print help |
