On Thu, 4 Jul 2019 at 15:52, tushar <tushar.ah...@enterprisedb.com> wrote: > > On 07/01/2019 11:04 AM, Amit Khandekar wrote: > > Also, in the updated patch (v11), I have added some scenarios that > verify that slot is dropped when either master wal_level is > insufficient, or when slot is conflicting. Also organized the test > file a bit. > > One scenario where replication slot removed even after fixing the problem > (which Error message suggested to do)
Which specific problem are you referring to ? Removing a conflicting slot, itself is the part of the fix for the conflicting slot problem. > > Please refer this below scenario > > Master cluster- > postgresql,conf file > wal_level=logical > hot_standby_feedback = on > port=5432 > > Standby cluster- > postgresql,conf file > wal_level=logical > hot_standby_feedback = on > port=5433 > > both Master/Slave cluster are up and running and are in SYNC with each other > Create a logical replication slot on SLAVE ( SELECT * from > pg_create_logical_replication_slot('m', 'test_decoding'); ) > > change wal_level='hot_standby' on Master postgresql.conf file / restart the > server > Run get_changes function on Standby - > postgres=# select * from pg_logical_slot_get_changes('m',null,null); > ERROR: logical decoding on standby requires wal_level >= logical on master > > Correct it on Master postgresql.conf file ,i.e set wal_level='logical' > again / restart the server > and again fire get_changes function on Standby - > postgres=# select * from pg_logical_slot_get_changes('m',null,null); > ERROR: replication slot "m" does not exist > > This looks little weird as slot got dropped/removed internally . i guess it > should get invalid rather than removed automatically. > Lets user's delete the slot themself rather than automatically removed as a > surprise. It was earlier discussed about what action should be taken when we find conflicting slots. Out of the options, one was to drop the slot, and we chose that because that was simple. See this : https://www.postgresql.org/message-id/flat/20181212204154.nsxf3gzqv3gesl32%40alap3.anarazel.de By the way, you are getting the "logical decoding on standby requires wal_level >= logical on master" error while using the slot, which is because we reject the command even before checking the existence of the slot. Actually the slot is already dropped due to master wal_level. Then when you correct the master wal_level, the command is not rejected, and proceeds to use the slot and then it is found that the slot does not exist. -- Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company