On Wed, Mar 13, 2024 at 12:51 PM Bertrand Drouvot <bertranddrouvot...@gmail.com> wrote: > > See the error messages on a standby: > > == wal removal > > postgres=# SELECT * FROM pg_logical_slot_get_changes('lsub4_slot', NULL, > NULL, 'include-xids', '0'); > ERROR: can no longer get changes from replication slot "lsub4_slot" > DETAIL: This slot has been invalidated because it exceeded the maximum > reserved size. > > == wal level > > postgres=# select conflict_reason from pg_replication_slots where slot_name = > 'lsub5_slot';; > conflict_reason > ------------------------ > wal_level_insufficient > (1 row) > > postgres=# SELECT * FROM pg_logical_slot_get_changes('lsub5_slot', NULL, > NULL, 'include-xids', '0'); > ERROR: can no longer get changes from replication slot "lsub5_slot" > DETAIL: This slot has been invalidated because it was conflicting with > recovery. > > == rows removal > > postgres=# select conflict_reason from pg_replication_slots where slot_name = > 'lsub6_slot';; > conflict_reason > ----------------- > rows_removed > (1 row) > > postgres=# SELECT * FROM pg_logical_slot_get_changes('lsub6_slot', NULL, > NULL, 'include-xids', '0'); > ERROR: can no longer get changes from replication slot "lsub6_slot" > DETAIL: This slot has been invalidated because it was conflicting with > recovery. > > As you can see, only wal level and rows removal are mentioning conflict with > recovery. > > So, are we already "wrong" mentioning "wal_removed" in conflict_reason?
It looks like yes. So, how about we fix it the way proposed here - https://www.postgresql.org/message-id/CALj2ACVd_dizYQiZwwUfsb%2BhG-fhGYo_kEDq0wn_vNwQvOrZHg%40mail.gmail.com? -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com