pg_ctl -w vs unix_socket_directory
Hello,
"pg_ctl -w -D ... start" doesn't work when unix_socket_directory is set
to somewhere else than the compiled in default ("/tmp"). Having this is
useful for the startup scripts, so the status "DONE" actually means
success, instead of "maybe".
Jeff Davis wrote about it a while ago:
http://svr5.postgresql.org/pgsql-general/2006-09/msg01141.php
Simple hacky patch for v8.2.5; maybe someone finds it useful before
the proper config parser is integrated:
http://cvs.pld-linux.org/cgi-bin/cvsweb/SOURCES/postgresql-pg_ctl-fix.patch?rev=HEAD
--
Radosław Zieliński <radek@pld-linux.org>
This has a trivial workaround - just set PGHOST for pg_ctl:
[andrew@constanza inst.codfix.5705]$
PGHOST=/home/andrew/pgl/inst.codfix.5705 bin/pg_ctl -D data/ -l logfile
-w start
waiting for server to start.... done
server started
[andrew@constanza inst.codfix.5705]$
cheers
andrew
Radoslaw Zielinski wrote:
Show quoted text
Hello,
"pg_ctl -w -D ... start" doesn't work when unix_socket_directory is set
to somewhere else than the compiled in default ("/tmp"). Having this is
useful for the startup scripts, so the status "DONE" actually means
success, instead of "maybe".Jeff Davis wrote about it a while ago:
http://svr5.postgresql.org/pgsql-general/2006-09/msg01141.phpSimple hacky patch for v8.2.5; maybe someone finds it useful before
the proper config parser is integrated:
http://cvs.pld-linux.org/cgi-bin/cvsweb/SOURCES/postgresql-pg_ctl-fix.patch?rev=HEAD
Andrew Dunstan <andrew@dunslane.net> [18-09-2007 23:42]:
This has a trivial workaround - just set PGHOST for pg_ctl:
[andrew@constanza inst.codfix.5705]$
PGHOST=/home/andrew/pgl/inst.codfix.5705 bin/pg_ctl -D data/ -l logfile -w
start
That would be fine for a particular installation, but isn't really
suitable for a startup script shipped with a linux distribution. Sure,
a /bin/sh-based postgresql.conf parser could do the trick... but I just
don't feel like writing one. :-)
--
Radosław Zieliński <radek@pld-linux.org>
Radoslaw Zielinski <radek42@gmail.com> writes:
"pg_ctl -w -D ... start" doesn't work when unix_socket_directory is set
to somewhere else than the compiled in default ("/tmp").
pg_ctl not working is going to be the very least of your worries;
pretty much nothing else will either.
If you want some other socket directory, I strongly recommend setting
the path to it at compile time so that it's properly wired into libpq.
AFAICS the only value in specifying unix_socket_directory at server
start is if you actually *want* a stealth server that won't be found
by clients without manual intervention.
regards, tom lane
Radoslaw Zielinski wrote:
Andrew Dunstan <andrew@dunslane.net> [18-09-2007 23:42]:
This has a trivial workaround - just set PGHOST for pg_ctl:
[andrew@constanza inst.codfix.5705]$
PGHOST=/home/andrew/pgl/inst.codfix.5705 bin/pg_ctl -D data/ -l logfile -w
startThat would be fine for a particular installation, but isn't really
suitable for a startup script shipped with a linux distribution. Sure,
a /bin/sh-based postgresql.conf parser could do the trick... but I just
don't feel like writing one. :-)
I think it's broken for a distro to ship with config files setting a
socket dir other than the one they compile in.
If you don't like /tmp compile in something else. The you don't need to
parse anything.
cheers
andrew
On 19/09/2007, Andrew Dunstan <andrew@dunslane.net> wrote:
Radoslaw Zielinski wrote:
[...]
That would be fine for a particular installation, but isn't really
suitable for a startup script shipped with a linux distribution. Sure,
[...]
I think it's broken for a distro to ship with config files setting a
socket dir other than the one they compile in.
The distro uses the default, of course. The issue is: the startup
script stops working if a sysadmin changes it manually, for whatever
reason.
Import Notes
Reply to msg id not found: a8dae1ea0709190301m4ed30198w8fcdd31988a3b001@mail.gmail.com
On 19/09/2007, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Radoslaw Zielinski <radek42@gmail.com> writes:
"pg_ctl -w -D ... start" doesn't work when unix_socket_directory is set
to somewhere else than the compiled in default ("/tmp").pg_ctl not working is going to be the very least of your worries;
pretty much nothing else will either.
If you want some other socket directory, I strongly recommend setting
[...]
I don't want any other socket directory. All I want is a way to
create a working startup script: able to start/stop the server
regardless of changes in postgresql.conf and report the success or
failure.
On Tue, 2007-09-18 at 19:13 -0400, Tom Lane wrote:
Radoslaw Zielinski <radek42@gmail.com> writes:
"pg_ctl -w -D ... start" doesn't work when unix_socket_directory is set
to somewhere else than the compiled in default ("/tmp").pg_ctl not working is going to be the very least of your worries;
pretty much nothing else will either.
If you mean client applications won't work, that would be expected from
such a change to the server configuration.
If you want some other socket directory, I strongly recommend setting
the path to it at compile time so that it's properly wired into libpq.
AFAICS the only value in specifying unix_socket_directory at server
start is if you actually *want* a stealth server that won't be found
by clients without manual intervention.
Those arguments apply almost as well to the server port. The server port
is read from the postgresql.conf from pg_ctl, but not the socket
directory.
It's an annoyance: if you change the default socket directory, you're
probably going to break your init script (on FreeBSD you will, because
it uses "-w"). I don't think that's the expected result, and it's not
intuitive to find the cause of the problem.
I think the inconsistency between server port number and socket
directory is less than ideal. However, I also don't feel very strongly
about it. It's rare, and a there are plenty of workarounds.
Regards,
Jeff Davis