Re: Strange deadlock with object/target of lock : transaction

Achilleas Mantzios <a.mantzios@cloud.gatewaynet.com>

From: Achilleas Mantzios <a.mantzios@cloud.gatewaynet.com>
To: pgsql-general@lists.postgresql.org
Date: 2025-08-25T14:40:06Z
Lists: pgsql-general
On 8/20/25 14:59, Achilleas Mantzios wrote:

> On 8/14/25 16:01, Achilleas Mantzios wrote:
>
>> Hi Adrian
>>
>> On 8/14/25 15:39, Adrian Klaver wrote:
>>
>>> On 8/14/25 00:07, Achilleas Mantzios wrote:
>>>> Hi All
>>>>
>>>> We've been hit by a weird deadlock which it took me some days to 
>>>> isolate and replicate. It does not have to do with order of updates 
>>>> or any explicit TABLE-level locking, the objects/targets of the 
>>>> deadlock in question are transactions.
>>>
>> First off, I maybe wrong with the above conclusion, I noticed that 
>> even in the common deadlock scenario (xact A updating object 1 and 
>> then 2, while xact B updating 2 and then 1) the message is again the 
>> same , i.e.
>>
>> Process <pid1> waits for ShareLock on transaction <xactB>; blocked by 
>> process <pid2>.
>>
>> Process <pid2> waits for ShareLock on transaction <xactA>; blocked by 
>> process <pid1>.
>>
>> while updating tuple ()...
>>
>> Also I should have mentioned that it takes at least three 
>> transactions as in the example to make the deadlock happen. At least 
>> two of the "UPDATE" style and one of the "INSERT" style.
>>
>>> I have some questions:
>>>
>>> 1) Did this work in versions prior to 18?
>> No, our production is on 16.9 and this is where I got the issue.
>>>
>>> 2) The test case you ran was done on 18beta1, are you planning to 
>>> test on the just released 18beta3?
>> I must upgrade, but I don't think anything will change, this behavior 
>> seems consistent at least across 16->18beta1
> Hi, I just tested with 18beta3, as expected, no change at all, I still 
> get the deadlock.

Hi I reproduced without the triggers, I understood the problem, I 
believe the system's behavior is the intended, I am sorry for the false 
alarm. The thing is that it takes >=3 transactions to happen . That was 
the tricky part, up to now in all cases of deadlocks we had two 
transactions involved, this one needed three or more.

>>>
>>>