Re: Deadlock between backend and recovery may not be detected - Mailing list pgsql-hackers

From Fujii Masao
Subject Re: Deadlock between backend and recovery may not be detected
Date
Msg-id 030f0625-481a-2e26-6d09-c860b0f075b1@oss.nttdata.com
Whole thread Raw
In response to Re: Deadlock between backend and recovery may not be detected  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
Responses Re: Deadlock between backend and recovery may not be detected  ("Drouvot, Bertrand" <bdrouvot@amazon.com>)
Re: Deadlock between backend and recovery may not be detected  (Victor Yegorov <vyegorov@gmail.com>)
Re: Deadlock between backend and recovery may not be detected  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
Re: Deadlock between backend and recovery may not be detected  (Masahiko Sawada <sawada.mshk@gmail.com>)
List pgsql-hackers

On 2020/12/25 13:16, Kyotaro Horiguchi wrote:
> At Wed, 23 Dec 2020 21:42:47 +0900, Fujii Masao <masao.fujii@oss.nttdata.com> wrote in
>> you. Attached
>> is the updated of the patch. What about this version?
> 
> The patch contains a hunk in the following structure.
> 
> +    if (got_standby_lock_timeout)
> +        goto cleanup;
> +
> +    if (got_standby_deadlock_timeout)
> +    {
> ...
> +    }
> +
> +cleanup:
> 
> It is eqivalent to
> 
> +    if (!got_standby_lock_timeout && got_standby_deadlock_timeout)
> +    {
> ...
> +    }
> 
> Is there any reason for the goto?

Yes. That's because we have the following code using goto.

+               /* Quick exit if there's no work to be done */
+               if (!VirtualTransactionIdIsValid(*backends))
+                       goto cleanup;


Regarding the back-patch, I was thinking to back-patch this to all the
supported branches. But I found that it's not easy to do that to v9.5
because v9.5 doesn't have some infrastructure code that this bug fix
patch depends on. So at least the commit 37c54863cf as the infrastructure
also needs to be back-patched to v9.5. And ISTM that some related commits
f868a8143a and 8f0de712c3 need to be back-patched. Probably there might
be some other changes to be back-patched. Unfortunately they cannot be
applied to v9.5 cleanly and additional changes are necessary.

This situation makes me feel that I'm inclined to skip the back-patch to v9.5.
Because the next minor version release is the final one for v9.5. So if we
unexpectedly introduce the bug to v9.5 by the back-patch, there is no
chance to fix that. OTOH, of course, if we don't do the back-patch, there is
no chance to fix the deadlock detection bug since the final minor version
for v9.5 doesn't include that bug fix. But I'm afraid that the back-patch
to v9.5 may give more risk than gain.

Thought?

Regards,  

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



pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: [HACKERS] logical decoding of two-phase transactions
Next
From: Michael Paquier
Date:
Subject: Re: Moving other hex functions to /common