Re: Add Information during standby recovery conflicts

Masahiko Sawada <sawada.mshk@gmail.com>

From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: Fujii Masao <masao.fujii@oss.nttdata.com>, "Drouvot, Bertrand" <bdrouvot@amazon.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Masahiko Sawada <masahiko.sawada@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2020-12-16T03:08:31Z
Lists: pgsql-hackers
On Wed, Dec 16, 2020 at 11:22 AM Kyotaro Horiguchi
<horikyota.ntt@gmail.com> wrote:
>
> At Tue, 15 Dec 2020 15:40:03 +0900, Fujii Masao <masao.fujii@oss.nttdata.com> wrote in
> >
> >
> > On 2020/12/15 12:04, Kyotaro Horiguchi wrote:
> > > [40509:startup] DETAIL:  Conflicting processes: 41171, 41194.
> ...
> > > I'm not sure, but it seems to me at least the period is unnecessary
> > > here.
> >
> > Since Error Message Style Guide in the docs says "Detail and hint
> > messages:
> > Use complete sentences, and end each with a period.", I think that a
> > period
> > is necessary here. No?
>
> In the first place it is not a complete sentence. Might be better be
> something like this if we strictly follow the style guide?

FWIW I borrowed the message style in errdetail from log messages in ProcSleep():

(errmsg("process %d still waiting for %s on %s after %ld.%03d ms",
        MyProcPid, modename, buf.data, msecs, usecs),
 (errdetail_log_plural("Process holding the lock: %s. Wait queue: %s.",
                       "Processes holding the lock: %s. Wait queue: %s.",
                       lockHoldersNum, lock_holders_sbuf.data,
lock_waiters_sbuf.data))));

> > Conflicting processes are 41171, 41194.
> > Conflicting processes are: 41171, 41194.

If we use the above message we might want to change other similar
messages I exemplified as well.

Regards,

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



Commits

  1. Log long wait time on recovery conflict when it's resolved.

  2. Add GUC to log long wait times on recovery conflicts.

  3. Detect the deadlocks between backends and the startup process.

  4. Get rid of the dedicated latch for signaling the startup process.

  5. Add block information in error context of WAL REDO apply loop