Re: pgsql: Add test for postmaster crash restarts.

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-committers <pgsql-committers@postgresql.org>
Date: 2017-09-30T22:44:24Z
Lists: pgsql-hackers

Attachments

On 2017-09-30 15:27:12 -0700, Andres Freund wrote:
> On 2017-09-30 18:21:33 -0400, Andrew Dunstan wrote:
> > 
> > [re-adding commiters which I inadvertently left off]
> > 
> > 
> > On 09/30/2017 06:10 PM, Andres Freund wrote:
> > >
> > >
> > >> I was just looking at this. Why aren't we using "pg_ctl kill" to
> > >> terminate the backend? That's supposed to be portable.
> > > Because pg_ctl can't do that for any process but postmaster, no? The
> > > test is supposed to find issues with backend death (and has
> > > defficiencies in error reporting already, and would have caught a bug
> > > I'd introduced previously).
> 
> > No, I don't think so. That's not what the docs say. That's why you give
> > it a pid argument" "pg_ctl kill signal_name process_id"
> 
> Oh, cool. Didn't know that one. So the answer is:
> "Because Andres doesn't know squat.".
> 
> But even after fixing that, there unfortunately is:
> 
> static void
> set_sig(char *signame)
> {
> …
> #if 0
> 	/* probably should NOT provide SIGKILL */
> 	else if (strcmp(signame, "KILL") == 0)
> 		sig = SIGKILL;
> #endif
> 
> I'm unclear on what that provision is achieving? If you can kill with
> pg_ctl you can do other nasty stuff too (like just use kill instead of
> pg_ctl)?

Could you perhaps test whether windows likes things after the following
patch?  I don't think the kill_kill guarantees are really needed here,
so we might even be able to allow this on msvc.

Greetings,

Andres Freund

Commits

  1. Allow pg_ctl kill to send SIGKILL.

  2. Try to make crash restart test work on windows.

  3. Make new crash restart test a bit more robust.

  4. Add test for postmaster crash restarts.