At Mon, 5 Sep 2022 11:56:33 +0200, "Drouvot, Bertrand" <bdrouvot@amazon.com> wrote in
> Hi,
>
> On 3/2/22 7:37 AM, Kyotaro Horiguchi wrote:
> > At Tue, 04 Jan 2022 10:29:31 +0900 (JST), Kyotaro
> > Horiguchi<horikyota.ntt@gmail.com> wrote in
> >> So what do you say if I propose the following?
> >>
> >> LOG: terminating process %d to release replication slot \"%s\"
> >> because its restart_lsn %X/%X exceeds the limit %X/%X
> >> HINT: You might need to increase max_slot_wal_keep_size.
> > This version emits the following message.
> >
> > [35785:checkpointer] LOG: terminating process 36368 to release
> > replication slot "s1" because its restart_lsn 0/1F000148 exceeds the
> > limit 0/21000000
> > [35785:checkpointer] HINT: You might need to increase
> > max_slot_wal_keep_size.
>
> As the hint is to increase max_slot_wal_keep_size, what about
> reporting the difference in size (rather than the limit lsn)?
> Something along those lines?
>
> [35785:checkpointer] LOG: terminating process 36368 to release
> replication slot "s1" because its restart_lsn 0/1F000148 exceeds the
> limit by <NNN MB>.
Thanks! That might be more sensible exactly for the reason you
mentioned. One issue doing that is size_pretty is dbsize.c local
function. Since the size is less than kB in many cases, we cannot use
fixed unit for that.
0001 and 0002 are the same with v5.
0003 exposes byte_size_pretty() to other modules.
0004 does the change by using byte_size_pretty()
After 0004 applied, they look like this.
> LOG: terminating process 108413 to release replication slot "rep3" because its restart_lsn 0/7000D8 exceeds the
limitby 1024 kB
> HINT: You might need to increase max_slot_wal_keep_size.
The reason for "1024 kB" instead of "1 MB" is the precise value is a
bit less than 1024 * 1024.
regards.
-
Kyotaro Horiguchi
NTT Open Source Software Center