[BUG] Deadlock detected when update with multiple clients - Mailing list pgsql-bugs

From tanghy.fnst@fujitsu.com
Subject [BUG] Deadlock detected when update with multiple clients
Date
Msg-id OS0PR01MB611318903C12DB5B08562B95FBDA9@OS0PR01MB6113.jpnprd01.prod.outlook.com
Whole thread Raw
Responses Re: [BUG] Deadlock detected when update with multiple clients  (hubert depesz lubaczewski <depesz@depesz.com>)
List pgsql-bugs
Hi

I met a deadlock when I update amounts of text-type data with multiple clients.
And there's no deadlock if I set autovacuum to off. Error messages about the
deadlock are as follows.

2021-09-14 09:18:40.392 CST [428452] ERROR:  deadlock detected
2021-09-14 09:18:40.392 CST [428452] DETAIL:  Process 428452 waits for ShareLock on transaction 1725; blocked by
process428455. 
        Process 428455 waits for ShareLock on transaction 1723; blocked by process 428452.
        Process 428452: UPDATE tbl SET body = upper(body);
        Process 428455: UPDATE tbl SET body = upper(body);
2021-09-14 09:18:40.392 CST [428452] HINT:  See server log for query details.
2021-09-14 09:18:40.392 CST [428452] CONTEXT:  while rechecking updated tuple (0,1) in relation "tbl"
2021-09-14 09:18:40.392 CST [428452] STATEMENT:  UPDATE tbl SET body = upper(body);

I'm not sure if I used it inappropriately, or it's unexpected. Could someone
take a look at this problem?

Attach a script to reproduce it. It took about 2~3 minutes to run it on my
machine.

FYI, I found this problem on HEAD and I could reproduce at PG14 and PG13. I
didn't try other versions.

Regards
Tang

Attachment

pgsql-bugs by date:

Previous
From: "Euler Taveira"
Date:
Subject: Re: BUG #17185: PostgreSQL performance GNU vs LLVM
Next
From: hubert depesz lubaczewski
Date:
Subject: Re: [BUG] Deadlock detected when update with multiple clients