Re: BUG #18426: Canceling vacuum while truncating a relation leads to standby PANIC

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-04-23T20:26:09Z
Lists: pgsql-bugs
After looking into that a bit more and rediscovering/re-remembering
all the previous threads about RelationTruncate()'s failures, which
d87251048a0f has made worse, I now think we should do one of two
things:

1.  Fix bug #18146[1].  Then this WaitIO() problem will be fixed as a
side-effect.  I posted a new patch over there.

2.  If somehow we can't agree on that critical section in back
branches (for example if we finish up deciding to do the big
re-engineering project for truncation where the buffer pool has new
states, ie fix in HEAD only), then at least wrap the truncation in
HOLD_INTERRUPTS() for releases 14-17.

[1] https://www.postgresql.org/message-id/flat/18146-04e908c662113ad5%40postgresql.org



Commits

  1. Fix corruption when relation truncation fails.

  2. Replace buffer I/O locks with condition variables.