Dear Euler, > 03. > ``` > /* > * Is the standby server ready for logical replication? > */ > static bool > check_subscriber(LogicalRepInfo *dbinfo) > ``` > > You said "target server must be a standby" in [1], but I cannot find checks > for it. > IIUC, there are two approaches: > a) check the existence "standby.signal" in the data directory > b) call an SQL function "pg_is_in_recovery"
I found that current code (HEAD+v14-0001) leads stuck or timeout because the recovery would be never finished. In attached script emulates the case standby.signal file is missing. This script always fails with below output: ``` ... pg_createsubscriber: waiting the postmaster to reach the consistent state pg_createsubscriber: postmaster was stopped pg_createsubscriber: error: recovery timed out ... ``` I also attached the server log during pg_createsubscriber, and we can see that walreceiver exits before receiving all the required changes. I cannot find a path yet, but the inconsistency lead the situation which walreceiver exists but startup remains. This also said that recovery status must be checked in check_subscriber(). Best Regards, Hayato Kuroda FUJITSU LIMITED https://www.fujitsu.com/
server_start_20240206T080003.670.log
Description: server_start_20240206T080003.670.log
test_0206.sh
Description: test_0206.sh