On 2018-04-05 14:39:27 -0400, Tom Lane wrote: > Andres Freund <and...@anarazel.de> writes: > > ISTM the better approach would be to try to reduce the cost of > > PostmasterIsAlive() on common platforms - it should be nearly free if > > done right. > > +1 if it's doable. > > > One way to achieve that would e.g. to stop ignoring SIGPIPE and instead > > check for postmaster death inside the handler, without reacting to > > it. Then the the actual PostmasterIsAlive() checks are just a check of a > > single sig_atomic_t. > > AFAIR, we do not get SIGPIPE on the postmaster pipe, because nobody > ever writes to it. So this sketch seems off to me, even assuming that > not-ignoring SIGPIPE causes no problems elsewhere.
Yea, you're probably right. I'm mostly brainstorming here. (FWIW, I don't think not ignoring SIGPIPE would be a huge issue if we don't immediately take any action on its account) > While it's not POSIX, at least some platforms are capable of delivering > a separate signal on parent process death. Perhaps using that where > available would be enough of an answer. Yea, that'd work on linux. Which is probably the platform 80-95% of performance critical PG workloads run on. There's JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE on windows, which might also work, but I'm not sure it provides enough opportunity for cleanup. Greetings, Andres Freund