Re: when the startup process doesn't

Stephen Frost <sfrost@snowman.net>

From: Stephen Frost <sfrost@snowman.net>
To: Andres Freund <andres@anarazel.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Magnus Hagander <magnus@hagander.net>, Jehan-Guillaume de Rorthais <jgdr@dalibo.com>, Robert Haas <robertmhaas@gmail.com>, Thomas Munro <thomas.munro@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2021-04-21T20:28:26Z
Lists: pgsql-hackers
Greetings,

* Andres Freund (andres@anarazel.de) wrote:
> On 2021-04-21 15:51:38 -0400, Stephen Frost wrote:
> > It does seem like we have some trade-offs here to weigh, but
> > pg_control is indeed quite small..
> 
> What do you mean by that? That the overhead of writing it out more
> frequently wouldn't be too bad? Or that we shouldn't "unnecessarily" add
> more fields to it?

Mostly just that the added overhead in writing it out more frequently
wouldn't be too bad.  Adding fields runs the risk of crossing the
threshold where we feel that we can safely assume all of it will make it
to disk in one shot and therefore there's more reason to not add extra
fields to it, if possible.

Seems the missing bit here is "how often, and how do we make that
happen?" and then we can discuss if there's reason to be concerned that
it would be 'too frequent' or cause too much additional overhead in
terms of IO/fsyncs.

Thanks,

Stephen

Commits

  1. Un-revert "Disable STARTUP_PROGRESS_TIMEOUT in standby mode."

  2. Revert "Disable STARTUP_PROGRESS_TIMEOUT in standby mode."

  3. Disable STARTUP_PROGRESS_TIMEOUT in standby mode.

  4. Fix race condition in startup progress reporting.

  5. Report progress of startup operations that take a long time.

  6. Add enable_timeout_every() to fire the same timeout repeatedly.