Re: Improve error context after some failed XLogReadRecord()

Kyotaro Horiguchi <horikyota.ntt@gmail.com>

From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: michael@paquier.xyz
Cc: pgsql-hackers@lists.postgresql.org
Date: 2021-11-09T07:58:11Z
Lists: pgsql-hackers
At Tue, 9 Nov 2021 10:47:11 +0900, Michael Paquier <michael@paquier.xyz> wrote in 
> Hi all,
> 
> I have noticed $subject while looking at a patch in this area:
> https://www.postgresql.org/message-id/YYiqxtEqhgb5gIWL@paquier.xyz
> 
> While we don't expect the four callers of XLogReadRecord() related to
> logical decoding to fail in the code paths changed by the patch
> attached, I think that it would be good to provide more context to
> users rather than just emitting an elog(ERROR) coming directly from
> the WAL reader.  This way, it becomes a bit easier to guess from where
> the failure is coming.
> 
> A patch is attached to improve all those elog()s.  I have tried not to
> be too fancy about those new error strings, but I am sure that these
> could be tweaked.
> 
> Thoughts?

As the whole, I agree that any substantial message is far better than
"%s" in regard to identifying the line that emitted a log line.

+				elog(ERROR, "could not find record to advance replication slot: %s",

I prefer "could not read record while advancing replcation slot",
because it is not finding a record but it is reading successive
records.  However, I don't strongly object to the current wording.

+		elog(ERROR, "could not find record to send logically-decoded data: %s", errm);

I prefer something like the above for the same reason.  How about
"could not read record while sending logically-decoded data:".  The
same with above, I'm not strongly opposed to the current wording.

Otherwise it looks good to me.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



Commits

  1. Improve error messages for some callers of XLogReadRecord()