On Sun, Nov 29, 2020 at 3:47 PM Drouvot, Bertrand <bdrou...@amazon.com> wrote:
>
> Hi Alvaro,
>
> On 11/28/20 6:36 PM, Alvaro Herrera wrote:
> > Hi Bertrand,
> >
> > On 2020-Nov-28, Drouvot, Bertrand wrote:
> >
> >> +             if (nprocs > 0)
> >> +             {
> >> +                     ereport(LOG,
> >> +                                     (errmsg("recovery still waiting 
> >> after %ld.%03d ms: %s",
> >> +                                                     msecs, usecs, 
> >> _(get_recovery_conflict_desc(reason))),
> >> +                                      (errdetail_log_plural("Conflicting 
> >> process: %s.",
> >> +                                                                          
> >>       "Conflicting processes: %s.",
> >> +                                                                          
> >>       nprocs, buf.data))));
> >> +             }
> >> +             else
> >> +             {
> >> +                     ereport(LOG,
> >> +                                     (errmsg("recovery still waiting 
> >> after %ld.%03d ms: %s",
> >> +                                                     msecs, usecs, 
> >> _(get_recovery_conflict_desc(reason)))));
> >> +             }
> >> +
> >> +             pfree(buf.data);
> >> +     }
> >> +     else
> >> +             ereport(LOG,
> >> +                             (errmsg("recovery still waiting after 
> >> %ld.%03d ms: %s",
> >> +                                             msecs, usecs, 
> >> _(get_recovery_conflict_desc(reason)))));
> >> +}
> > Another trivial stylistic point is that you can collapse all these
> > ereport calls into one, with something like
> >
> >    ereport(LOG,
> >            errmsg("recovery still waiting after ...", opts),
> >            waitlist != NULL ? errdetail_log_plural("foo bar baz", opts) : 
> > 0);
> >
> > where the "waitlist" has been constructed beforehand, or is set to NULL
> > if there's no process list.
>
> Nice!
>
> >
> >> +     switch (reason)
> >> +     {
> >> +             case PROCSIG_RECOVERY_CONFLICT_BUFFERPIN:
> >> +                     reasonDesc = gettext_noop("for recovery conflict on 
> >> buffer pin");
> >> +                     break;
> > Pure bikeshedding after discussing this with my pillow: I think I'd get
> > rid of the initial "for" in these messages.
>
> both comments implemented in the new attached version.
>

Thank you for updating the patch!

+       /* Also, set deadlock timeout for logging purpose if necessary */
+       if (log_recovery_conflict_waits && !need_log)
+       {
+           timeouts[cnt].id = STANDBY_TIMEOUT;
+           timeouts[cnt].type = TMPARAM_AFTER;
+           timeouts[cnt].delay_ms = DeadlockTimeout;
+           cnt++;
+       }

You changed to 'need_log' but this condition seems not correct. I
think we need to set this timeout when both log_recovery_conflict and
need_log is true.

The rest of the patch looks good to me.

Regards,

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


Reply via email to