On Thu, Sep 18, 2025 at 10:22 AM Tom Lane <[email protected]> wrote:
>
> Amit Kapila <[email protected]> writes:
> > On Thu, Sep 18, 2025 at 8:56 AM Tom Lane <[email protected]> wrote:
> >> +1 for the first change, but for this:
> >>
> >> -                       ? errdetail("Retention is re-enabled as the apply 
> >> process is advancing its xmin within the configured max_retention_duration 
> >> of %u ms.",
> >> +                       ? errdetail("Retention is re-enabled because the 
> >> apply process can advance its xmin within the configured 
> >> max_retention_duration of %u ms.",
> >>
> >> would it be better to say
> >>
> >> "Retention is re-enabled because the apply process was able to advance its 
> >> xmin within the configured max_retention_duration of %u ms."
>
> > xmin is not yet advanced. In this state, we ensured that the
> > subscriber has caught up with the publisher and now the apply worker
> > can start maintaining/advancing its xmin.
>
> Hm, so what has max_retention_duration got to do with it?
>

It is the duration used to avoid subscriber being too much behind
publisher (and hence leading to retaining dead tuples for conflict
detection for a very long time). If the apply worker on the subscriber
is not caught up for this (max_retention_duration) duration then we
stop retaining dead tuples. Similarly, when the apply worker is able
to catch up before max_retention_duration is elapsed, we will resume
retention.

>
  That
> is, should the message just read
>
>         "Retention is re-enabled because the apply process can advance its 
> xmin."
> or better
>         "Retention is re-enabled because the apply process has caught up with 
> the publisher."
>
> This now reminds me of a point that I meant to make in my previous
> reply and forgot: this whole business of "advancing xmin" is
> implementation jargon.
>

Yeah, this sounds clear but shall we consider using
max_retention_duration like: "Retention is re-enabled because the
apply process has caught up with the publisher within the configured
max_retention_duration.". We can have a single message if we don't
want to specify the value of max_retention_duration or simply skip
adding max_retention_duration.

-- 
With Regards,
Amit Kapila.


Reply via email to