Re: Autovacuum worker doesn't immediately exit on postmaster death
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Stephen Frost <sfrost@snowman.net>, Andres Freund <andres@anarazel.de>,
Victor Yegorov <vyegorov@gmail.com>,
Alexander Kukushkin <cyberdemn@gmail.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2020-10-29T21:47:49Z
Lists: pgsql-hackers
Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > On 2020-Oct-29, Stephen Frost wrote: >> I do think it'd be good to find a way to check every once in a while >> even when we aren't going to delay though. Not sure what the best >> answer there is. > Maybe instead of thinking specifically in terms of vacuum, we could > count buffer accesses (read from kernel) and check the latch once every > 1000th such, or something like that. Then a very long query doesn't > have to wait until it's run to completion. The cost is one integer > addition per syscall, which should be bearable. I'm kind of unwilling to add any syscalls at all to normal execution code paths for this purpose. People shouldn't be sig-kill'ing the postmaster, or if they do, cleaning up the mess is their responsibility. I'd also suggest that adding nearly-untestable code paths for this purpose is a fine way to add bugs we'll never catch. The if-we're-going-to-delay-anyway path in vacuum_delay_point seems OK to add a touch more overhead to, though. regards, tom lane
Commits
-
Use a WaitLatch for vacuum/autovacuum sleeping
- 4753ef37e0ed 14.0 landed