Re: An extra error for client disconnection on Windows - Mailing list pgsql-hackers

From Tom Lane
Subject Re: An extra error for client disconnection on Windows
Date
Msg-id 21532.1473431951@sss.pgh.pa.us
Whole thread Raw
In response to Re: An extra error for client disconnection on Windows  (Haribabu Kommi <kommi.haribabu@gmail.com>)
Responses Re: An extra error for client disconnection on Windows  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-hackers
Haribabu Kommi <kommi.haribabu@gmail.com> writes:
> On Thu, Jun 2, 2016 at 6:51 PM, Kyotaro HORIGUCHI <
> horiguchi.kyotaro@lab.ntt.co.jp> wrote:
>> After a process termination without PQfinish() of a client,
>> server emits the following log message not seen on Linux boxes.
>> LOG:  could not receive data from client: An existing connection was
>> forcibly closed by the remote host.
>> 
>> This patch translates WSAECONNRESET of WSARecv to an EOF so that
>> pgwin32_recv behaves the same way with Linux.

> Marked the patch as "ready for committer".

Windows is not my platform, but ... is this actually an improvement?
I'm fairly concerned that this change would mask real errors that ought
to get logged.  I don't know that that's an okay price to pay for
suppressing a log message when clients violate the protocol.

According to
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx
WSAECONNRESET means:
   An existing connection was forcibly closed by the remote host. This   normally results if the peer application on
theremote host is   suddenly stopped, the host is rebooted, the host or remote network   interface is disabled, or the
remotehost uses a hard close (see   setsockopt for more information on the SO_LINGER option on the remote   socket).
Thiserror may also result if a connection was broken due to   keep-alive activity detecting a failure while one or more
operations  are in progress. Operations that were in progress fail with   WSAENETRESET. Subsequent operations fail with
WSAECONNRESET.

(The description of WSAENETRESET, on the same page, indicates that the
last two sentences apply only to the keep-alive failure case.)

So this change would deal nicely with the "peer application on the remote
host is suddenly stopped" case, at the price of being not nice about any
of the other cases.  Not convinced it's a good tradeoff.
        regards, tom lane



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Make better use of existing enums in plpgsql
Next
From: Tom Lane
Date:
Subject: Re: Add support for restrictive RLS policies