Thread: pg_ctl restart issue with relative paths
Hi, I have noticed that, using pg_ctl, if you start Postgres using a relative path, then attempt to restart it from anywhere else, it fails. Example: thom@swift /tmp $ pg_ctl -D primary start server starting thom@swift /tmp $ pg_ctl -D primary restart waiting for server to shut down.... done server stopped server starting thom@swift /tmp $ cd thom@swift ~ $ pg_ctl -D /tmp/primary restart waiting for server to shut down.... done server stopped server starting thom@swift ~ $ postgres cannot access the server configuration file "/home/thom/primary/postgresql.conf": No such file or directory thom@swift ~ $ cd /tmp/primary thom@swift /tmp/primary $ pg_ctl -D /tmp/primary restart pg_ctl: PID file "/tmp/primary/postmaster.pid" does not exist Is server running? starting server anyway server starting thom@swift /tmp/primary $ postgres cannot access the server configuration file "/tmp/primary/primary/postgresql.conf": No such file or directory thom@swift /tmp/primary $ cd .. thom@swift /tmp $ pg_ctl -D /tmp/primary restart pg_ctl: PID file "/tmp/primary/postmaster.pid" does not exist Is server running? starting server anyway server starting This issue does not occur if stopping then starting. I suspect the blame lies with postmaster.opts not storing the resolved absolute path. OS: Linux Mint 13 64-bit PostgreSQL version: 9.1.6 at least (just the stable version I tested on), and git master -- Thom
On Sat, Oct 13, 2012 at 3:56 PM, Thom Brown <thom@linux.com> wrote: > I have noticed that, using pg_ctl, if you start Postgres using a > relative path, then attempt to restart it from anywhere else, it > fails. Yeah, I was complaining about the same problem here: http://archives.postgresql.org/pgsql-bugs/2011-10/msg00210.php and at least there's a doc note now warning against using relative paths, though it sure would be nice if we could fix this gripe. Josh
Josh Kupershmidt <schmiddy@gmail.com> writes: > On Sat, Oct 13, 2012 at 3:56 PM, Thom Brown <thom@linux.com> wrote: >> I have noticed that, using pg_ctl, if you start Postgres using a >> relative path, then attempt to restart it from anywhere else, it >> fails. > Yeah, I was complaining about the same problem here: > http://archives.postgresql.org/pgsql-bugs/2011-10/msg00210.php I just re-read that thread, and it occurred to me that there is another way to fix the problem: what we need is either for postmaster.opts to not store the -D option at all, or for pg_ctl restart to override that option with its freshly-derived idea of where the data directory is. This would avoid my allergy to the idea of storing an absolute-ified path, which I'm still down on because it would have failure modes of its own. regards, tom lane
On Sun, Oct 14, 2012 at 09:56:46AM -0700, Josh Kupershmidt wrote: > On Sat, Oct 13, 2012 at 3:56 PM, Thom Brown <thom@linux.com> wrote: > > > I have noticed that, using pg_ctl, if you start Postgres using a > > relative path, then attempt to restart it from anywhere else, it > > fails. > > Yeah, I was complaining about the same problem here: > http://archives.postgresql.org/pgsql-bugs/2011-10/msg00210.php > > and at least there's a doc note now warning against using relative > paths, though it sure would be nice if we could fix this gripe. FYI, the doc patch is mentioned here: http://archives.postgresql.org/pgsql-bugs/2012-08/msg00133.php -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +