Re: Replication slot stats misgivings
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
Date: 2021-03-22T06:49:23Z
Lists: pgsql-hackers
On Mon, Mar 22, 2021 at 1:25 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > On Sat, Mar 20, 2021 at 3:52 AM Andres Freund <andres@anarazel.de> wrote: > > > > - If max_replication_slots was lowered between a restart, > > pgstat_read_statfile() will happily write beyond the end of > > replSlotStats. > > I think we cannot restart the server after lowering > max_replication_slots to a value less than the number of replication > slots actually created on the server. No? This problem happens in the case where max_replication_slots is lowered and there still are stats for a slot. I understood the risk of running out of replSlotStats. If we use the index in replSlotStats instead, IIUC we need to somehow synchronize the indexes in between replSlotStats and ReplicationSlotCtl->replication_slots. The order of replSlotStats is preserved across restarting whereas the order of ReplicationSlotCtl->replication_slots isn’t (readdir() that is used by StartupReplicationSlots() doesn’t guarantee the order of the returned entries in the directory). Maybe we can compare the slot name in the received message to the name in the element of replSlotStats. If they don’t match, we swap entries in replSlotStats to synchronize the index of the replication slot in ReplicationSlotCtl->replication_slots and replSlotStats. If we cannot find the entry in replSlotStats that has the name in the received message, it probably means either it's a new slot or the previous create message is dropped, we can create the new stats for the slot. Is that what you mean, Andres? Regards, -- Masahiko Sawada EDB: https://www.enterprisedb.com/
Commits
-
Doc: Update logical decoding stats information.
- 0c6b92d9c6fb 14.0 landed
-
Fix tests for replication slots stats.
- fc69509131c3 14.0 landed
-
Update replication statistics after every stream/spill.
- 592f00f8dec6 14.0 landed
-
Fix the computation of slot stats for 'total_bytes'.
- 205f466282be 14.0 landed
-
Another try to fix the test case added by commit f5fc2f5b23.
- 51ef9173030c 14.0 landed
-
Use HTAB for replication slot statistics.
- 3fa17d37716f 14.0 landed
-
Fix test case added by commit f5fc2f5b23.
- c64dcc7fee5f 14.0 landed
-
Add information of total data processed to replication slot stats.
- f5fc2f5b23d1 14.0 landed
-
Use NameData datatype for slotname in stats.
- cca57c1d9bf7 14.0 landed