postgres under linux can't start because of postmaster.pid

Started by Richard Wangabout 18 years ago4 messages
#1Richard Wang
ruc_wang@hotmail.com

I construct a postmaster.pid file and then set the pid to be one of existing
process id(not postgres, e.g vim), then I run postgres. This may happen if
postgres crashed last time and left a postmaster.pid file, and last postgres
id is reused by another process which is not postgres now.

What I expect is that postgres runs normally and overwrites postmaster.pid
with new postgres id.

In windows it succeeds, but in linux it reports error as follows:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 9899) running in data directory
"/home/hcwang/threading/bin/data"?

the pid file content is as follows:
9899
/home/hcwang/postgres/bin/data
5432001 0

and I run 'ps -u hcwang'
9899 pts/8 00:00:00 vim

Is this a bug or? Why pg under windows and linux have different behavior?

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Richard Wang (#1)
Re: postgres under linux can't start because of postmaster.pid

"Richard Wang" <ruc_wang@hotmail.com> writes:

I construct a postmaster.pid file and then set the pid to be one of existing
process id(not postgres, e.g vim), then I run postgres. This may happen if
postgres crashed last time and left a postmaster.pid file, and last postgres
id is reused by another process which is not postgres now.

Don't do that. The postmaster is perfectly capable of recovering on
its own, why would you want to mess with the postmaster.pid file?

regards, tom lane

#3Richard Wang
ruc_wang@hotmail.com
In reply to: Richard Wang (#1)
Re: postgres under linux can't start because of postmaster.pid

I just consider this may happens and pg can't recover correctly:
if postgres crashed last time and left a postmaster.pid file, and last
postgres
id is reused by another process which is not postgres now.

"Tom Lane" <tgl@sss.pgh.pa.us> д����Ϣ����:29598.1193228404@sss.pgh.pa.us...

Show quoted text

"Richard Wang" <ruc_wang@hotmail.com> writes:

I construct a postmaster.pid file and then set the pid to be one of
existing
process id(not postgres, e.g vim), then I run postgres. This may happen
if
postgres crashed last time and left a postmaster.pid file, and last
postgres
id is reused by another process which is not postgres now.

Don't do that. The postmaster is perfectly capable of recovering on
its own, why would you want to mess with the postmaster.pid file?

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Richard Wang (#3)
Re: postgres under linux can't start because of postmaster.pid

"Richard Wang" <ruc_wang@hotmail.com> writes:

I just consider this may happens and pg can't recover correctly:
if postgres crashed last time and left a postmaster.pid file, and last
postgres
id is reused by another process which is not postgres now.

Postgres defends itself against that just fine, at least in any
reasonably recent release. There are some corner cases where it
could have problems, but scripted hacking on the .pid file is just
about guaranteed to make things worse not better.

regards, tom lane