Thread: Fix PID file location?

Fix PID file location?

From
Josh Berkus
Date:
Hey, folks,

I've noticed a problem with alternate PGDATA locations.  Here's how to 
reproduce:

On 8.0.2 on RHAS4:

1) Initdb a directory (on my system, /pgdata/pgdata)
2) Move the .conf files to an alternate location ( /etc/pgsql/)
3) Set $PGDATA to the alternate location ( /etc/pgsql )
4) Edit postgresql.conf to support this file arrangementdata_directory = '/pgdata/pgdata'               
5) pg_ctl start PostgreSQL
6) pg_ctl stop PostgreSQL
7) Get an error:  "No PID file found".

The problem seems to be that pg_ctl expects the PID file to be in $PGDATA, but 
the file actually gets written by the postmaster to the actual data 
directory.  You can work around this by setting "external_pid_file", but this 
then prevents you from using external_pid_file for another purpose.

Seems like it should be a relatively easy fix, although I'm not sure whether 
the postmaster should write the PID to $PGDATA, or whether pg_ctl should be 
made to look in the right place.  Probably the latter.

-- 
--Josh

Josh Berkus
Aglio Database Solutions
San Francisco


Re: Fix PID file location?

From
Josh Berkus
Date:
FOlks,

> The problem seems to be that pg_ctl expects the PID file to be in $PGDATA,
> but the file actually gets written by the postmaster to the actual data
> directory.  You can work around this by setting "external_pid_file", but
> this then prevents you from using external_pid_file for another purpose.

More about this: due to the PID file not being in the right place, pg_ctl stop 
never reports success:

waiting for postmaster to shut 
down............................................................... failed
pg_ctl: postmaster does not shut down

This appears to be because the duplicate PID in the conf directory is not 
removed on shutdown.

-- 
--Josh

Josh Berkus
Aglio Database Solutions
San Francisco