On 30/09/2018 15:47, Michael Paquier wrote:
On Thu, Sep 13, 2018 at 12:24:38PM -0700, Andres Freund wrote:
On 2018-09-13 15:27:58 +0800, Paul Guo wrote:
 From the respective of users instead of developers, I think for such
important
service, tty should be dissociated, i.e. postmaster should be daemonized by
default (and even should have default log filename?) or be setsid()-ed at
least.

I don't think it'd be good to switch to postgres daemonizing itself.  If
we were starting fresh, maybe, but there's plenty people invoking
postgres from scripts etc.  And tools like systemd don't actually want
daemons to fork away, so there's no clear need from that side either.

It seems to me that the thread is pointing out that we would not want
the postmaster to daemonize itself, but that something in pg_ctl could
be introduced, potentially optional.  I am marking this patch as
returned with feedback.

Hmm. So, the requirements are:

1. When launched from pg_ctl, postmaster should become leader of a new session and process group. To address Paul's original scenario.

2. If "postmaster" is launched stand-alone from terminal or a script, it should stay in foreground, in the parent session, so that it can be killed with Ctrl-C.

3. Hitting Ctrl-C while "pg_ctl start -w" is waiting for postmaster to start up, should "abort" and kill postmaster.

We talked about adding a flag to postmaster, to tell it to call setsid(). But I'm not sure what would be the appropriate time to do it. If it's done early during postmaster startup, then we still wouldn't have solved 3. Hitting Ctrl-C on pg_ctl, while the server is still in recovery, would not kill the server. We could do it after recovery has finished, but if we have already launched auxiliar processes, I think they would stay in the old process group and session. So I don't think that works.

Another idea would be to call setsid() in pg_ctl, after forking postmaster, like in Paul's original patch. That solves 1. and 2. To still do 3., add a signal handler for SIGINT in pg_ctl, which forwards the SIGINT to the postmaster process. Thoughts on that?

- Heikki

Reply via email to