On Tuesday, December 19, 2023 9:05 PM Kuroda, Hayato/黒田 隼人 <kuroda.hay...@fujitsu.com> wrote: > > Dear Shveta, > > I resumed to review the patch. I will play more about it, but I can post some > cosmetic comments.
Thanks for the comments. > > ==== > walsender.c > > 01. WalSndWaitForStandbyConfirmation > > ``` > + sleeptime = WalSndComputeSleeptime(GetCurrentTimestamp()); > ``` > > It works well, but I'm not sure whether we should use > WalSndComputeSleeptime() > because the function won't be called by walsender. Changed to a hard-coded value. > > 02.WalSndWaitForStandbyConfirmation > > ``` > + ConditionVariableTimedSleep(&WalSndCtl->wal_confirm_rcv_cv, > sleeptime, > + > WAIT_EVENT_WAL_SENDER_WAIT_FOR_STANDBY_CONFIRMATION) > ``` > > Hmm, is it OK to use the same event as WalSndWaitForWal()? IIUC it should be > avoided. As discussed, I change the event name to a more common one, so that it makes sense to use it in both places. > > 03. WalSndShmemInit() > > ``` > + > + ConditionVariableInit(&WalSndCtl->wal_confirm_rcv_cv); > ``` > > Unnecessary blank? Removed. > > ~~~~~ > 050_standby_failover_slots_sync.pl > > 04. General > > My pgperltidy modified your test. Please check. Will run this in next version. > > 05. > > ``` > # Create publication on the primary > ``` > > Missing "a" before publication? Changed. > > 06. > > ``` > $subscriber1->init(allows_streaming => 'logical'); > ... > $subscriber2->init(allows_streaming => 'logical'); > ``` > > IIUC, these settings are not needed. Yeah, removed. > > 07. > > ``` > my $primary_insert_time = time(); > ``` > > The variable is not used. Removed. > > 08. > > ``` > # Stop the standby associated with the specified physical replication slot so > # that the logical replication slot won't receive changes until the standby > # slot's restart_lsn is advanced or the slot is removed from the > # standby_slot_names list > ``` > > Missing comma? Added. > > 09. > > ``` > $back_q->query_until(qr//, > "SELECT pg_logical_slot_get_changes('test_slot', NULL, NULL);\n"); > ``` > > Not sure, should we have to close the back_q connection? Added the quit. > > 10. > > ``` > # Remove the standby from the standby_slot_names list and reload the > # configuration > $primary->adjust_conf('postgresql.conf', 'standby_slot_names', "''"); > $primary->psql('postgres', "SELECT pg_reload_conf()"); > ``` > a. > Missing comma? > > b. > I counted and reload function in perl (e.g., `$primary->reload;`) is more > often > to > be used. Do you have a reason to use pg_reload_conf()? I think it was copied from other places, changed to ->reload. > > 11. > > ``` > # Now that the standby lsn has advanced, the primary must send the decoded > # changes to the subscription. > $publisher->wait_for_catchup('regress_mysub1'); > ``` > > Is the comment correct? I think primary sends data because the GUC is > modified. Fixed. > > 12. > > ``` > # Put the standby back on the primary_slot_name for the rest of the tests > $primary->adjust_conf('postgresql.conf', 'standby_slot_names', 'sb1_slot'); > $primary->restart(); > ``` > > Just to confirm - you used restart() here because we must ensure the GUC > change is > propagated to all backends, right? Yes, but I think restart is not necessary, so I changed it to reload. > > ~~~~~ > wait_event_names.txt > > 13. > > ``` > +WAL_SENDER_WAIT_FOR_STANDBY_CONFIRMATION "Waiting for the > WAL to be received by physical standby in WAL sender process." > ``` > > But there is a possibility that backend processes may wait with the event, > right? Adjusted. Best Regards, Hou zj