Re: Replication slot stats misgivings - Mailing list pgsql-hackers

From vignesh C
Subject Re: Replication slot stats misgivings
Date
Msg-id CALDaNm39BHQt5xqCaa9=8QEuZstxQGztN2hTP=BndvBihWm=RQ@mail.gmail.com
Whole thread Raw
In response to Re: Replication slot stats misgivings  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
List pgsql-hackers
On Mon, Apr 5, 2021 at 12:44 PM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:
>
> On Sat, Apr 3, 2021 at 11:12 PM vignesh C <vignesh21@gmail.com> wrote:
> > Here pg_stat_replication_slots will not have enought slots. I changed
> > it to below:
> > errmsg("skipping \"%s\" replication slot statistics as
> > pg_stat_replication_slots does not have enough slots"
> > Thoughts?
>
> WFM.
>
> > > 3) Should we change the if condition to max_replication_slots <=
> > > nReplSlotStats instead of max_replication_slots == nReplSlotStats? In
> > > the scenario, it is mentioned that "one of the replication slots is
> > > dropped", will this issue occur when multiple replication slots are
> > > dropped?
> > >
> >
> > I felt it should be max_replication_slots == nReplSlotStats, if
> > max_replication_slots = 5, we will be able to store 5 replication slot
> > statistics from 0,1..4, from 5th we will not have space. I think this
> > need not be changed.
>
> I'm not sure whether we can have a situation where
> max_replication_slots < nReplSlotStats i.e. max_replication_slots
> getting set to lesser than nReplSlotStats. I think I didn't get the
> above mentioned scenario i.e.  max_replication_slots == nReplSlotStats
> correctly. It will be great if you could throw some light on that
> scenario and ensure that it's not possible to reach a situation where
> max_replication_slots < nReplSlotStats.

Usually this will not happen, there is a remote chance that will
happen in the below scenario:
When a replication slot is created, a slot is created in
pg_stat_replication_slot also by the statistics collector, this cannot
exceed  max_replication_slots. Whenever a slot is dropped, the
corresponding slot will be deleted from pg_stat_replication_slot. The
statistics collector uses UDP protocol for communication hence there
is no guarantee that the message is received by the statistic
collector process. After the user has dropped the replication slot, if
the server is stopped(here statistic collector process has not yet
received the drop replication slot statistic). Then the user reduces
the max_repllication_slot and starts the server. In this scenario the
statistic collector process will have more replication slot
statistics(as the drop was not received) than max_replication_slot.

Regards,
Vignesh



pgsql-hackers by date:

Previous
From: Bharath Rupireddy
Date:
Subject: Re: Logical Replication - improve error message while adding tables to the publication in check_publication_add_relation
Next
From: Kazutaka Onishi
Date:
Subject: Re: TRUNCATE on foreign table