Re: should check interrupts in BuildRelationExtStatistics ?

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>, pgsql-hackers@postgresql.org
Date: 2022-05-09T03:31:16Z
Lists: pgsql-hackers
On Sun, May 08, 2022 at 07:01:08PM -0500, Justin Pryzby wrote:
> Restarting a large instance took twice as long as I expected due to not
> checking interrupts in (at least) statext_ndistinct_build.  Long enough that I
> attached (and was able to attach) a debugger to verify, which I think is too
> long.  I think it could cause issues for an high-availability cluster or other
> script if it takes too long to shut down.

Hmm.  That's annoying.

> The tables being auto-analyzed have 9 exteneded stats objects, each with stats
> target=10.  7 of those are (ndistinct) stats on 4 simple columns plus 1
> expression (5 total).  And the other 2 stats objects are expressional stats
> (necessarily on a single expression).

How long can the backend remain unresponsive?  I don't think that
anybody would object to the addition of some CHECK_FOR_INTERRUPTS() in
areas where it would be efficient to make the shutdown quicker, but
we need to think carefully about the places where we'd want to add
these.
--
Michael

Commits

  1. Invent qsort_interruptible().