Hi, On Fri, Jan 12, 2024 at 03:46:00AM +0000, Zhijie Hou (Fujitsu) wrote: > On Thursday, January 11, 2024 11:42 PM Bertrand Drouvot > <bertranddrouvot...@gmail.com> wrote: > > Hi, > > > On Thu, Jan 11, 2024 at 04:22:56PM +0530, Amit Kapila wrote: > > IIUC, this would be a sync slot (so not usable until promotion) that could > > not be > > used anyway (invalidated), so I'll vote for drop / re-create then. > > Such race can happen when user drop and re-create the same failover slot on > primary as well. For example, user dropped one failover slot and them > immediately created a new one by copying from an old slot(using > pg_copy_logical_replication_slot). Then the slotsync worker will find the > restart_lsn of this slot go backwards. > > The steps: > ---- > SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', > 'pgoutput', false, false, true); > SELECT 'init' FROM pg_create_logical_replication_slot('test', 'pgoutput', > false, false, true); > > - Advance the restart_lsn of 'test' slot > CREATE TABLE test2(a int); > INSERT INTO test2 SELECT generate_series(1,10000,1); > SELECT slot_name FROM pg_replication_slot_advance('test', > pg_current_wal_lsn()); > > - re-create the test slot but based on the old isolation_slot. > SELECT pg_drop_replication_slot('test'); > SELECT 'copy' FROM pg_copy_logical_replication_slot('isolation_slot', 'test'); > > Then the restart_lsn of 'test' slot will go backwards.
Yeah, that's right. BTW, I think it's worth to add those "corner cases" in the TAP tests related to the sync slot feature (the more coverage the better). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com