public inbox for [email protected]
help / color / mirror / Atom feedFrom: Amit Kapila <[email protected]>
To: Bharath Rupireddy <[email protected]>
Cc: Bertrand Drouvot <[email protected]>
Cc: Nathan Bossart <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation
Date: Sat, 16 Mar 2024 15:54:46 +0530
Message-ID: <CAA4eK1+7Y6bknNNentcNfkmCBfm3j2fLjA4JjVydz3TB2MTjVA@mail.gmail.com> (raw)
In-Reply-To: <CALj2ACVtLt0rPnr4NS6c72DdtQmpyQA=qcMaVfn6vu7j5yQvzw@mail.gmail.com>
References: <CALj2ACWgACB4opnbqi=x7Hc4aqcgkXoLsh1VB+gfidXaDQNu_Q@mail.gmail.com>
<CALj2ACWE9asmvN1B18LqfHE8uBuWGsCEP7OO5trRCxPtTPeHVA@mail.gmail.com>
<[email protected]>
<CALj2ACWbR9ck1PKyqT2agd2XCEq8L=D=X1Uw566yhA9SgXspAw@mail.gmail.com>
<20240301221108.GB3024365@nathanxps13>
<CALj2ACUprrvq=R9WBnCEtguBhSp0X+krTCGDvkHyBdawyex-kA@mail.gmail.com>
<20240303214434.GA3036597@nathanxps13>
<[email protected]>
<CALj2ACXBz9HG767ink9nQdz0n6EdZz5g_qutek2ffTP6LNDbGw@mail.gmail.com>
<20240305194443.GA3481820@nathanxps13>
<[email protected]>
<CALj2ACWgm++=TkXWo9spm+7ibGxcYL3SsYtT4tbW3=HT1VYs0Q@mail.gmail.com>
<CAA4eK1K28TybqsG9hEP4OaV4OrK__-3E35y5QYW-867p-Ur5gw@mail.gmail.com>
<CALj2ACV+gMb_AWzVCinwyQHi6uyOFMF4x60=B3Y5Zp9uq+H6Gw@mail.gmail.com>
<CAA4eK1+C3QxAZ6UtpSn9umGB33YjtYJgxA_xVXCacATEfZG4YQ@mail.gmail.com>
<CALj2ACUNDR==n6ebq86ShBqdf64EasANuxmXQBDYHDHeN3G5Fg@mail.gmail.com>
<CAA4eK1LF28ZTwmf3D-OQWeMdQqjB56P+iAmfWM7Bcwow3icBJQ@mail.gmail.com>
<CALj2ACVtLt0rPnr4NS6c72DdtQmpyQA=qcMaVfn6vu7j5yQvzw@mail.gmail.com>
On Fri, Mar 15, 2024 at 10:45 AM Bharath Rupireddy
<[email protected]> wrote:
>
> On Wed, Mar 13, 2024 at 9:38 AM Amit Kapila <[email protected]> wrote:
> >
> > BTW, is XID the based parameter 'max_slot_xid_age' not have similarity
> > with 'max_slot_wal_keep_size'? I think it will impact the rows we
> > removed based on xid horizons. Don't we need to consider it while
> > vacuum computing the xid horizons in ComputeXidHorizons() similar to
> > what we do for WAL w.r.t 'max_slot_wal_keep_size'?
>
> I'm having a hard time understanding why we'd need something up there
> in ComputeXidHorizons(). Can you elaborate it a bit please?
>
> What's proposed with max_slot_xid_age is that during checkpoint we
> look at slot's xmin and catalog_xmin, and the current system txn id.
> Then, if the XID age of (xmin, catalog_xmin) and current_xid crosses
> max_slot_xid_age, we invalidate the slot.
>
I can see that in your patch (in function
InvalidatePossiblyObsoleteSlot()). As per my understanding, we need
something similar for slot xids in ComputeXidHorizons() as we are
doing WAL in KeepLogSeg(). In KeepLogSeg(), we compute the minimum LSN
location required by slots and then adjust it for
'max_slot_wal_keep_size'. On similar lines, currently in
ComputeXidHorizons(), we compute the minimum xid required by slots
(procArray->replication_slot_xmin and
procArray->replication_slot_catalog_xmin) but then don't adjust it for
'max_slot_xid_age'. I could be missing something in this but it is
better to keep discussing this and try to move with another parameter
'inactive_replication_slot_timeout' which according to me can be kept
at slot level instead of a GUC but OTOH we need to see the arguments
on both side and then decide which makes more sense.
--
With Regards,
Amit Kapila.
view thread (32+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected], [email protected]
Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation
In-Reply-To: <CAA4eK1+7Y6bknNNentcNfkmCBfm3j2fLjA4JjVydz3TB2MTjVA@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox