On Thu, Feb 9, 2023 at 11:21 AM Amit Kapila <amit.kapil...@gmail.com> wrote: > > > How about renaming ProcessPendingWrites to WaitToSendPendingWrites or > WalSndWaitToSendPendingWrites? >
How about renaming WalSndUpdateProgress() to WalSndUpdateProgressAndSendKeepAlive() or WalSndUpdateProgressAndKeepAlive()? One thing to note about the changes we are discussing here is that some of the plugins like wal2json already call OutputPluginUpdateProgress in their commit callback. They may need to update it accordingly. One difference I see with the patch is that I think we will end up sending keepalive for empty prepared transactions even though we don't skip sending begin/prepare messages for those. The reason why we don't skip sending prepare for empty 2PC xacts is that if the WALSender restarts after the PREPARE of a transaction and before the COMMIT PREPARED of the same transaction then we won't be able to figure out if we have skipped sending BEGIN/PREPARE of a transaction. To skip sending prepare for empty xacts, we previously thought of some ideas like (a) At commit-prepare time have a check on the subscriber-side to know whether there is a corresponding prepare for it before actually doing commit-prepare but that sounded costly. (b) somehow persist the information whether the PREPARE for a xact is already sent and then use that information for commit prepared but again that also didn't sound like a good idea. -- With Regards, Amit Kapila.