Re: Add “FOR UPDATE NOWAIT” lock details to the log.

Fujii Masao <masao.fujii@oss.nttdata.com>

From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Yuki Seino <seinoyu@oss.nttdata.com>, Jelte Fennema-Nio <postgres@jeltef.nl>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2025-02-28T12:51:10Z
Lists: pgsql-hackers

On 2025/02/28 21:08, Yuki Seino wrote:
> 
> On 2025/02/27 15:44, Yuki Seino wrote:
>> (4) https://github.com/postgres/postgres/blob/master/src/backend/access/heap/heapam_handler.c#L463
>> ...I don't know how to reproduce it.
> I have confirmed that (4) can be reproduced using the following procedure.
> 
> (4) https://github.com/postgres/postgres/blob/master/src/backend/access/heap/heapam_handler.c#L463
> tx1=# SELECT pg_advisory_lock(0);
> tx2=# SELECT * FROM pgbench_accounts WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT;
> tx1=# UPDATE pgbench_accounts SET aid = aid WHERE aid = '1';
> tx1=# BEGIN;
> tx1=# UPDATE pgbench_accounts SET aid = aid WHERE aid = '1';
> tx1=# SELECT pg_advisory_unlock(0);
> 
> Send the modified patch.

Thanks for updating the patch!

I encountered a compilation error with the patch. You can also see the error in the patch tester.
https://cirrus-ci.com/task/5070779370438656

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION




Commits

  1. Rename log_lock_failure GUC to log_lock_failures for consistency.

  2. Add GUC option to log lock acquisition failures.

  3. Split ProcSleep function into JoinWaitQueue and ProcSleep