Re: Add Information during standby recovery conflicts - Mailing list pgsql-hackers

From Masahiko Sawada
Subject Re: Add Information during standby recovery conflicts
Date
Msg-id CAD21AoCMP6QPZDK2uqHmG_tV=Uwo5_8yKK1uKec6PnzN30YQkw@mail.gmail.com
Whole thread Raw
In response to Re: Add Information during standby recovery conflicts  ("Drouvot, Bertrand" <bdrouvot@amazon.com>)
Responses Re: Add Information during standby recovery conflicts  ("Drouvot, Bertrand" <bdrouvot@amazon.com>)
List pgsql-hackers
On Mon, Nov 16, 2020 at 4:55 PM Drouvot, Bertrand <bdrouvot@amazon.com> wrote:
>
> Hi,
>
> On 11/16/20 6:44 AM, Masahiko Sawada wrote:
> > Thank you for updating the patch.
> >
> > Here are review comments.
> >
> > +           if (report_waiting && (!logged_recovery_conflict ||
> > new_status == NULL))
> > +               ts = GetCurrentTimestamp();
> >
> > The condition will always be true if log_recovery_conflict_wait is
> > false and report_waiting is true, leading to unnecessary calling of
> > GetCurrentTimestamp().
> >
> > ---
> > +   <para>
> > +    You can control whether a log message is produced when the startup process
> > +    is waiting longer than <varname>deadlock_timeout</varname> for recovery
> > +    conflicts. This is controled by the <xref
> > linkend="guc-log-recovery-conflict-waits"/>
> > +    parameter.
> > +   </para>
> >
> > s/controled/controlled/
> >
> > ---
> >      if (report_waiting)
> >          waitStart = GetCurrentTimestamp();
> >
> > Similarly, we have the above code but we don't need to call
> > GetCurrentTimestamp() if update_process_title is false, even if
> > report_waiting is true.
> >
> > I've attached the patch that fixes the above comments. It can be
> > applied on top of your v8 patch.
>
> Thanks for the review and the associated fixes!
>
> I've attached a new version that contains your fixes.
>

Thank you for updating the patch.

I have other comments:

+   <para>
+    You can control whether a log message is produced when the startup process
+    is waiting longer than <varname>deadlock_timeout</varname> for recovery
+    conflicts. This is controlled by the
+    <xref linkend="guc-log-recovery-conflict-waits"/> parameter.
+   </para>

It would be better to use 'WAL replay' instead of 'the startup
process' for consistency with circumjacent descriptions. What do you
think?

---
@@ -1260,6 +1262,8 @@ ProcSleep(LOCALLOCK *locallock, LockMethod
lockMethodTable)
  else
  enable_timeout_after(DEADLOCK_TIMEOUT, DeadlockTimeout);
  }
+ else
+   standbyWaitStart = GetCurrentTimestamp();

I think we can add a check of log_recovery_conflict_waits to avoid
unnecessary calling of GetCurrentTimestamp().

I've attached the updated version patch including the above comments
as well as adding some assertions. Please review it.

Regards,

-- 
Masahiko Sawada
EnterpriseDB:  https://www.enterprisedb.com/

Attachment

pgsql-hackers by date:

Previous
From: "k.jamison@fujitsu.com"
Date:
Subject: RE: Cache relation sizes?
Next
From: Michael Paquier
Date:
Subject: Re: Skip ExecCheckRTPerms in CTAS with no data