Re: heap_inplace_lock vs. autovacuum w/ LOCKTAG_TUPLE

Alexander Law <exclusion@gmail.com>

From: Alexander Lakhin <exclusion@gmail.com>
To: Noah Misch <noah@leadboat.com>, pgsql-hackers@postgresql.org
Date: 2024-10-27T05:00:00Z
Lists: pgsql-hackers
Hello Noah,

27.10.2024 07:09, Noah Misch wrote:
> On Sat, Oct 26, 2024 at 11:49:36AM -0700, Noah Misch wrote:
>> intra-grant-inplace-db.spec got a novel failure today:
>> https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=sarus&dt=2024-10-26%2014%3A08%3A58
>>
>> The isolationtester_waiting query is supposed to detect that step vac2 is
>> blocked.  vac2 didn't finish within the timeout, but isolationtester_waiting
>> never considered it blocked.
>> ... work on reproducing this.

FWIW, there was a similar failure in August: [1], and I also could not
reproduce that locally, yet wrote a preliminary analysis at [2] in the
Unsorted section, in the hope to see it again and continue investigation.

[1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=iguana&dt=2024-08-29%2013%3A57%3A57
[2] https://wiki.postgresql.org/wiki/Known_Buildfarm_Test_Failures

Best regards,
Alexander



Commits

  1. Unpin buffer before inplace update waits for an XID to end.

  2. For inplace update durability, make heap_update() callers wait.