Re: Replication slot stats misgivings

From: vignesh C <vignesh21(at)gmail(dot)com>
To: Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>
Cc: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>
Subject: Re: Replication slot stats misgivings
Date: 2021-04-05 13:54:26
Message-ID: CALDaNm39BHQt5xqCaa9=8QEuZstxQGztN2hTP=BndvBihWm=RQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Apr 5, 2021 at 12:44 PM Bharath Rupireddy
<bharath(dot)rupireddyforpostgres(at)gmail(dot)com> wrote:
>
> On Sat, Apr 3, 2021 at 11:12 PM vignesh C <vignesh21(at)gmail(dot)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

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Kazutaka Onishi 2021-04-05 14:08:08 Re: TRUNCATE on foreign table
Previous Message Bharath Rupireddy 2021-04-05 13:49:25 Re: Logical Replication - improve error message while adding tables to the publication in check_publication_add_relation