On Tue, Jan 29, 2013 at 04:34:50PM -0500, Peter Eisentraut wrote:
> On 1/28/13 9:29 PM, Bruce Momjian wrote:
> > pg_upgrade uses that to find out of the server was already running or if
> > we started it. This is to start the server to remove the
> > postmaster.pid file.
>
> It's currently a bit missed up anyway. pg_ctl start is successful if
> the server is already started, but pg_ctl -w start fails.
Yeah, that is odd:
# pg_ctl start
pg_ctl: another server might be running; trying to start server anyway
server starting
# FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 14144) running in data directory
"/u/pgsql/data"?
# echo $?
0
# pg_ctl -w start
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....FATAL: lock file "postmaster.pid"
already exists
HINT: Is another postmaster (PID 14144) running in data directory
"/u/pgsql/data"?
....
pg_ctl: this data directory appears to be running a pre-existing
postmaster
stopped waiting
pg_ctl: could not start server
Examine the log output.
# echo $?
1
It is because pg_ctl without -w doesn't want to see if the start was
successful. Fortunately, pg_upgrade always uses -w.
> What pg_upgrade is doing doesn't sound particularly safe, for example
> when something is concurrently starting or stopping the server.
Yes, there is always the risk of someone starting the server while it is
down during pg_upgrade; we assume the user has control of others
starting the server during pg_upgrade.
> > Also, no one has explained how not knowing if -o
> > options were used was a safe.
>
> Hmm, good point. But we already have this problem -- see above.
Yes, also true. I guess I can only stay it works for -w. :-(
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers