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

Attachment: v2-0001-Avoid-blocking-indefinitely-while-finishing-walse.patch
Description: Binary data

Reply via email to