On Fri, Apr 24, 2026 at 11:05 AM Chao Li <[email protected]> wrote: > ProcessPendingWrites() calls ProcessRepliesIfAny() in the first place, so if > it is possible that, a new COPY message is appended after the already-queued > CommandComplete? Which seems to violate the protocol, but I am not sure if > that would lead to any trouble. > > So, maybe we need a new helper, say ProcessPendingWritesForShutdown(), that > loops while pq_is_send_pending(), call WalSndCheckShutdownTimeout() and only > wait for WL_SOCKET_WRITEABLE, then pq_flush_if_writable(), on flush failure, > maybe WalSndShutdown().
Thanks for the review! You're right. I added such loop directly in WalSndDone() instead of introducing a new helper function, since only WalSndDone() needs it and the extra loop does not make WalSndDone() significantly more complicated. I've attached an updated patch. Regards, -- Fujii Masao
v2-0001-Avoid-blocking-indefinitely-while-finishing-walse.patch
Description: Binary data
