Hi,
On 2022-03-04 22:01:22 -0800, Andres Freund wrote:
> On 2022-03-04 20:06:43 -0800, Andres Freund wrote:
> > On 2022-03-05 16:39:21 +1300, Thomas Munro wrote:
> > > I vote for committing that workaround into the tree temporarily,
> > > because it's not just cfbot, it's also everyone's dev branches on
> > > Github + the official mirror that are red.
> >
> > I'll do so after making dinner, unless you want to do so sooner. It did fix
> > the problem (intermixed with a few irrelevant changes): https://cirrus-ci.com/task/4928987829895168
>
> Pushed.
Cirrus now provides a way to get the old behaviour back without pinning an old
agent version. See attached and a run passing the problematic steps [1]:
The way this is intended to be done in cirrus (rather than preventing it from
killing "escaped" processes) would be to use 'background_script' to run
something longer running.
Unfortunately that's surprisingly hard with our tooling, or maybe I'm just
daft:
1) We don't have a way to wait for server startup to finish if we don't block
on pg_ctl start. So we'd have to use 'sleep', write a loop around
pq_isready. Perhaps pg_ctl should have an option to wait for server startup
/ shutdown without doing the starting/stopping itself?
2) There's no trivial way of starting postgres with pg_ctl and then waiting
for the server to be shut down in the background script. The easiest would
be to start psql just wait for it to be killed by an immediate shutdown :/.
3) We can't just start postgres in the foreground to get around 2), because
pg_ctl does the dropping of permissions we need, rather than postgres
itself. It'd also need 1).
Seems like we're missing some fairly basic tooling somehow...
Regards,
Andres
[1] https://cirrus-ci.com/task/5810196135018496