On Mon, Aug 16, 2021 at 4:44 PM Peter Smith <smithpb2...@gmail.com> wrote:
> I have reviewed the v13-0001 patch. > > Apply / build / test was all OK > > Below are my code review comments. > > ////////// > > Comments for v13-0001 > ===================== > > 1. Patch comment > > => > > Probably this comment should include some description for the new > "keepalive" logic as well. Added. > > ------ > > 2. src/backend/replication/syncrep.c - new function > > @@ -330,6 +330,18 @@ SyncRepWaitForLSN(XLogRecPtr lsn, bool commit) > } > > /* > + * Check if Sync Rep is enabled > + */ > +bool > +SyncRepEnabled(void) > +{ > + if (SyncRepRequested() && ((volatile WalSndCtlData *) > WalSndCtl)->sync_standbys_defined) > + return true; > + else > + return false; > +} > + > > 2a. Function comment => > > Why abbreviations in the comment? Why not say "synchronous > replication" instead of "Sync Rep". > Changed. > ~~ > > 2b. if/else => > > Remove the if/else. e.g. > > return SyncRepRequested() && ((volatile WalSndCtlData *) > WalSndCtl)->sync_standbys_defined; > > ~~ Changed. > > 2c. Call the new function => > > There is some existing similar code in SyncRepWaitForLSN(), e.g. > > if (!SyncRepRequested() || > !((volatile WalSndCtlData *) WalSndCtl)->sync_standbys_defined) > return; > > Now that you have a new function you maybe can call it from here, e.g. > > if (!SyncRepEnabled()) > return; > Updated. > ------ > > 3. src/backend/replication/walsender.c - whitespace > > + if (send_keep_alive) > + force_keep_alive_syncrep = true; > + > + > > => > > Extra blank line? Removed. > > ------ > > 4. src/backend/replication/walsender.c - call keepalive > > if (MyWalSnd->flush < sentPtr && > MyWalSnd->write < sentPtr && > !waiting_for_ping_response) > + { > WalSndKeepalive(false); > + } > + else > + { > + if (force_keep_alive_syncrep && SyncRepEnabled()) > + WalSndKeepalive(false); > + } > > > 4a. Move the SynRepEnabled() call => > > I think it is not necessary to call the SynRepEnabled() here. Instead, > it might be better if this is called back when you assign the > force_keep_alive_syncrep flag. So change the WalSndUpdateProgress, > e.g. > > BEFORE > if (send_keep_alive) > force_keep_alive_syncrep = true; > AFTER > force_keep_alive_syncrep = send_keep_alive && SyncRepEnabled(); > > Note: Also, that assignment also deserves a big comment to say what it is > doing. > > ~~ changed. > > 4b. Change the if/else => > > If you make the change for 4a. then perhaps the keepalive if/else is > overkill and could be changed.e.g. > > if (force_keep_alive_syncrep || > MyWalSnd->flush < sentPtr && > MyWalSnd->write < sentPtr && > !waiting_for_ping_response) > WalSndKeepalive(false); > Changed. regards, Ajin Cherian Fujitsu Australia
v14-0001-Skip-empty-transactions-for-logical-replication.patch
Description: Binary data