Introduce IOException subclass for ECONNRESET

Chris Hegarty chris.hegarty at oracle.com
Wed Oct 5 08:58:27 UTC 2016


I filed the following issue to track this:
   https://bugs.openjdk.java.net/browse/JDK-8167161

-Chris.

On 04/10/16 13:52, David M. Lloyd wrote:
> On 10/04/2016 03:58 AM, Langer, Christoph wrote:
>> Hi,
>>
>> I think I would also support replacing
>> sun.net.ConnectionResetException with a publicly available
>> java.net.ConnectionResetException that subclasses
>> java.net.SocketException. But, as Chris mentions. a usage example
>> would be helpful.
>
> At present you're going to be hard-pressed to find exiting code that
> detects a connection reset IOException.  The reason is that, while you
> *can* search for "Connection reset by peer" in the exception message,
> that text varies by platform and, more importantly, by locale.  So it is
> essentially impossible to detect reliably.
>
> But Norman's use case is dead on: a connection reset happens under
> common circumstances.  In particular, when a TCP socket is closed by the
> peer before the peer has read all pending data, an RST is returned. This
> happens very often - when a peer process is terminated for example, or
> the peer encounters an unrelated exception and terminates the connection
> abruptly, both of which happen very, very commonly in networked
> applications.  For servers the choice today is to fill the log with
> meaningless exception traces or lose potentially more serious problems
> (EIO for example is something that almost always indicates Bad Things).
>
> I also support this proposal.
>
>>> -----Original Message-----
>>> From: net-dev [mailto:net-dev-bounces at openjdk.java.net] On Behalf Of
>>> Chris
>>> Hegarty
>>> Sent: Montag, 12. September 2016 17:07
>>> To: Florian Weimer <fweimer at redhat.com>; Norman Maurer
>>> <norman.maurer at googlemail.com>; net-dev at openjdk.java.net
>>> Subject: Re: Introduce IOException subclass for ECONNRESET
>>>
>>> On 12/09/16 14:50, Florian Weimer wrote:
>>>> On 08/23/2016 09:40 AM, Norman Maurer wrote:
>>>>> Hi all,
>>>>>
>>>>> I first asked this on nio-dev[0] but was asked to move this over to
>>>>> here:
>>>>>
>>>>> I wonder if it would be possible to add a new IOException sub-class
>>>>> for ECONNRESET. Often you receive these errors if a remote peer closed
>>>>> the connection and you try to read from it while using NIO. This is
>>>>> very often not really something that concerns people and can just be
>>>>> handled the same as a “normal close”.
>>>
>>> So what are the other cases, where ECONNRESET may occur? What is
>>> equivalent on non-Unix platforms, Windows for example?
>>>
>>>  >> At the moment the only way to
>>>>> detect this is to inspect the IOException message which is really
>>>>> hacky.
>>>
>>> Do you have examples of code that does this today?
>>>
>>>>> I wonder if we could not add a special IOException sub-class
>>>>> for this. Something like:
>>>>>
>>>>> ConnectionResetException extends IOException {
>>>>> }
>>>>
>>>> Shouldn't it be a subclass of SocketException?
>>>
>>> I think it would have to be a subclass of SocketException too, for
>>> compatibility at least, since that is the type that is thrown
>>> today.
>>>
>>> sun.net.ConnectionResetException exists today, but I don't think
>>> that it ever finds its way outside of the implementation. And is
>>> of course not part of Java SE.
>>>
>>> -Chris.
>>>
>>
>


More information about the net-dev mailing list