Re: START_REPLICATION SLOT causing a crash in an assert build

From: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>
To: sawada(dot)mshk(at)gmail(dot)com
Cc: andres(at)anarazel(dot)de, amit(dot)kapila16(at)gmail(dot)com, michael(at)paquier(dot)xyz, jkatz(at)postgresql(dot)org, jcasanov(at)systemguards(dot)com(dot)ec, pgsql-hackers(at)postgresql(dot)org, john(dot)naylor(at)enterprisedb(dot)com
Subject: Re: START_REPLICATION SLOT causing a crash in an assert build
Date: 2022-10-07 06:30:43
Message-ID: 20221007.153043.1155070328130446489.horikyota.ntt@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

At Fri, 7 Oct 2022 12:14:40 +0900, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote in
> > What about if we go the other direction - simply remove the name from the
> > stats entry at all. I don't actually think we need it anymore. Unless I am
> > missing something right now - entirely possible! - the danger that
> > pgstat_acquire_replslot() mentions doesn't actually exist [anymore]. After a
> > crash we throw away the old stats data and if a slot is dropped while shut
> > down, we'll not load the slot data at startup.

The key point of this is this:

+ * XXX: I think there cannot actually be data from an older slot
+ * here. After a crash we throw away the old stats data and if a slot is
+ * dropped while shut down, we'll not load the slot data at startup.

I think this is true. Assuming that we don't recreate or rename
objects that have stats after writing out stats, we won't have stats
for a different object with the same name. If we can rely on that
fact, the existing check in pgstat_acquire_replslot() becomes
useless. Thus we don't need to store object name in stats entry. I
agree to that.

> +1. I think it works. Since the replication slot index doesn't change
> during server running we can fetch the name from
> ReplicationSlotCtl->replication_slots.

That access seems safe in a bit different aspect, too. Both
checkpointer (and walsender) properly initialize ReplicationSlotCtl.

> If we don't need the name in stats entry, pgstat_acquire_replslot() is
> no longer necessary?

I think so. The entry will be created at the first report.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2022-10-07 06:34:51 Re: use has_privs_of_role() for pg_hba.conf
Previous Message Etsuro Fujita 2022-10-07 06:18:59 Re: Fast COPY FROM based on batch insert