Re: Add an option to skip loading missing publication to avoid logical replication failure
От | Amit Kapila |
---|---|
Тема | Re: Add an option to skip loading missing publication to avoid logical replication failure |
Дата | |
Msg-id | CAA4eK1+gaEyYJpsGZktfXptU4gbLcwbzFTC0TBZc1UY2SBPydw@mail.gmail.com обсуждение исходный текст |
Ответ на | Add an option to skip loading missing publication to avoid logical replication failure (vignesh C <vignesh21@gmail.com>) |
Список | pgsql-hackers |
On Mon, Feb 19, 2024 at 12:49 PM vignesh C <vignesh21@gmail.com> wrote: > > Currently ALTER SUBSCRIPTION ... SET PUBLICATION will break the > logical replication in certain cases. This can happen as the apply > worker will get restarted after SET PUBLICATION, the apply worker will > use the existing slot and replication origin corresponding to the > subscription. Now, it is possible that before restart the origin has > not been updated and the WAL start location points to a location prior > to where PUBLICATION pub exists which can lead to such an error. Once > this error occurs, apply worker will never be able to proceed and will > always return the same error. > > There was discussion on this and Amit had posted a patch to handle > this at [2]. Amit's patch does continue using a historic snapshot but > ignores publications that are not found for the purpose of computing > RelSyncEntry attributes. We won't mark such an entry as valid till all > the publications are loaded without anything missing. This means we > won't publish operations on tables corresponding to that publication > till we found such a publication and that seems okay. > I have added an option skip_not_exist_publication to enable this > operation only when skip_not_exist_publication is specified as true. > There is no change in default behavior when skip_not_exist_publication > is specified as false. > Did you try to measure the performance impact of this change? We can try a few cases where DDL and DMLs are involved, missing publication (drop publication and recreate after a varying number of records to check the impact). The other names for the option could be: skip_notexistant_publications, or ignore_nonexistant_publications. Can we think of any others? -- With Regards, Amit Kapila.
В списке pgsql-hackers по дате отправления: