On Mon, Nov 18, 2024 at 12:24 PM Nisha Moond <nisha.moond...@gmail.com> wrote:
>
> On Fri, Nov 15, 2024 at 3:01 PM Amit Kapila <amit.kapil...@gmail.com> wrote:
> >
> > On Thu, Nov 14, 2024 at 12:12 PM Nisha Moond <nisha.moond...@gmail.com> 
> > wrote:
> > >
> > > On Thu, Oct 31, 2024 at 11:05 PM Bruce Momjian <br...@momjian.us> wrote:
> > > >
> > > >
> > > > Yes, all good suggestions, updated patch attached.
> > > >
> > >
> > > Few comments for the changes under "inactive_since" description:
> > >
> > > +        The time when slot synchronization (see <xref
> > > +        linkend="logicaldecoding-replication-slots-synchronization"/>)
> > > +        was most recently stopped.  <literal>NULL</literal> if the slot
> > > +        has always been synchronized.  This is useful for slots on the
> > > +        standby that are being synced from a primary server (whose
> > > +        <structfield>synced</structfield> field is 
> > > <literal>true</literal>)
> > > +        so they know when the slot stopped being synchronized.
> > >
> > > 1)
> > > To me, the above lines give the impression that "inactive_since" is
> > > only meaningful for the logical slots which are being synchronized
> > > from primary to standby, which is not correct. On a primary node, this
> > > column gives the timestamp when any slot becomes inactive. By removing
> > > the line -
> > > -        The time since the slot has become inactive.
> > > I feel we lost the description that explains this column’s purpose on
> > > primary nodes. I suggest explicitly clarifying the inactive_since
> > > column's meaning on primary nodes as well.
> > >
> >
> > Good point. The same holds true for following change in the patch as well:
> > - /* The time since the slot has become inactive */
> > + /* The time when slot synchronization was most recently stopped. */
> >   TimestampTz inactive_since;
> >
> > Do you have suggestions for improving the proposal?
> >
>
> Considering earlier discussion in [1], I dig up some details about
> when and where the inactive_since field is set to a non-null value:
>
> 1) When a slot is released, it is marked as inactive, and immediately
> the inactive_since field is set to current time (e.g., when the
> respective subscription is disabled, dropped, or the slot is
> invalidated).
> 2) When slots are restored from disk (e.g., during a server restart),
> the current time is set as inactive_since for all slots.
> 3) On a standby server, the slot-sync worker sets the current time (as
> "last synchronized time") for all slots being synced from the primary
> during each sync cycle.
>
> -- inactive_since will be reset to NULL by the process that acquires
> the slot, making it active or in-use again.
>
> AFAIU, inactive_since indicates the point in time when the slot became
> inactive, as the field is set immediately when any of the above
> conditions are triggered. It is not a case where a periodic process
> observes the slot as inactive and sets inactive_since to the "observed
> time", even if the slot was deactivated some time ago.
>
> Given this understanding, and to avoid unnecessary complexity, I agree
> with David's suggestion [1]:
>
> - The time when the slot became inactive. (retained this in patch as
> wording aligns with the field name)
> - The time when the slot was deactivated.
>
> Alternatively, we could use "timestamp" instead of "time" to clearly
> indicate that this refers to a specific timestamp and not a duration:
>  "The timestamp indicating when the slot became inactive."
>
> Thoughts?
>
> For the description of synced slots on standby, I’m fine with keeping
> Bruce's suggestion from patch [2] as it is.
>
> Attached the patch with modification.
>

Looks reasonable to me.

> ~~~~
>
> On another note, It seems the confusion appears to arise from the
> field name, "inactive_since". I believe it would be clearer if the
> name were changed to something more descriptive, such as:
> - deactivated_at
> - became_inactive_at
> However, I’m unsure if such a change would be permissible now.
>

If I recall correctly, we have kept the current name after much
discussion. I don't want to get into this discussion again unless we
have a strong reason for the same.

-- 
With Regards,
Amit Kapila.


Reply via email to