Re: Introduce XID age and inactive timeout based replication slot invalidation

From: Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Cc: vignesh C <vignesh21(at)gmail(dot)com>, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, shveta malik <shveta(dot)malik(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, Ajin Cherian <itsajin(at)gmail(dot)com>, Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Nathan Bossart <nathandbossart(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation
Date: 2025-02-06 10:38:17
Message-ID: CABdArM4YxT7YbrC_p-NmLsWhQ763Oui7VmhJ+NooKw6Y91Tfog@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Feb 6, 2025 at 10:17 AM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>
> On Thu, Feb 6, 2025 at 8:02 AM Nisha Moond <nisha(dot)moond412(at)gmail(dot)com> wrote:
> >
> > On Wed, Feb 5, 2025 at 2:42 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> > >
> > > Would it address your concern if we write the actual idle duration
> > > (now - inactive_since) instead of directly using inactive_since in the
> > > above message?
> > >
> >
> > Simply using the raw timestamp difference (now - inactive_since) would
> > look odd. We should convert it into a user-friendly format. Since
> > idle_replication_slot_timeout is in minutes, we can express the
> > difference in minutes and seconds in the log.
> > For example:
> > DETAIL: The slot's idle time of 1 minute and 7 seconds exceeds the
> > configured "idle_replication_slot_timeout" duration.
> >
>
> This is better but the implementation should be done on the caller
> side mainly because we don't want to call a new GetCurrentTimestamp()
> in ReportSlotInvalidation.
>

Done.

> >
> > > 2.
> > > + * Flush all replication slots to disk. Also, invalidate obsolete slots during
> > > + * non-shutdown checkpoint.
> > > *
> > > * It is convenient to flush dirty replication slots at the time of checkpoint.
> > > * Additionally, in case of a shutdown checkpoint, we also identify the slots
> > > @@ -1924,6 +2007,45 @@ CheckPointReplicationSlots(bool is_shutdown)
> > >
> > > Can we try and see how the patch looks if we try to invalidate the
> > > slot due to idle time at the same time when we are trying to
> > > invalidate due to WAL?
> > >
> >
> > I'll consider the suggested change in the next version.
> >
>

Done the changes as suggested in v71.

> FYI, we discussed this previously (1), but the conclusion that it
> won't help much (as it will not help to remove WAL immediately) is
> incorrect, especially if we do what is suggested now.
>
> Apart from this, I have made minor changes in the comments. Please
> review and include them unless you disagree.
>

Done.
~~~~
Here are the v71 patches with the above comments incorporated.

--
Thanks,
Nisha

Attachment Content-Type Size
v71-0001-Introduce-inactive_timeout-based-replication-slo.patch application/octet-stream 25.8 KB
v71-0002-Add-TAP-test-for-slot-invalidation-based-on-inac.patch application/octet-stream 6.6 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jakub Wartak 2025-02-06 10:50:04 Re: AIO v2.3
Previous Message Álvaro Herrera 2025-02-06 10:31:43 Re: Proposal to CREATE FOREIGN TABLE LIKE