Обсуждение: postgres under linux can't start because of postmaster.pid

Поиск
Список
Период
Сортировка

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

От
"Richard Wang"
Дата:
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?





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

От
Tom Lane
Дата:
"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


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

От
"Richard Wang"
Дата:
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...
> "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
> 




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

От
Tom Lane
Дата:
"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