Hi,
On 2022-02-10 20:25:28 -0500, Tom Lane wrote:
> I was staring at that for awhile too. It's my own code (from 1f39a1c0641)
> but it sure confuses me now; at the very least the code is not in sync
> with the comment. However, it's been that way for a couple years now and
> we've not had complaints suggesting it's broken, so maybe it's the comment
> that's wrong.
I wonder if it could be part of the whole "walreceiver on windows not noticing
connection death" business. Libpq internally gets a write failure, defers
reporting it, we end up in libpqrcv_PQgetResult(), which will call PQisBusy()
returning true due to write_failure, which then causes us to wait for incoming
socket IO. But WaitEventForMultipleObjects() will not be signalled again due
to the the edge triggered nature of FD_CLOSE.
Greetings,
Andres Freund