Hi Mark,

On 07/10/2019 16:09, mark sheppard wrote:
Hi Daniel,
   wrt impl note ... would some explanation on the esoteric reason for a now possible BindException  be useful, also?
[...]
the output will show a java.net.BindException, which is sort of arcane for a disconnect ?

There is such a thing as over specification for a dark system specific
corner case of the API.
The CSR [1] and release notes [2] should have enough documentation
without engraving such details in stone in the Java SE specification.

If it is strongly recommended to close the DatagramChannel, why not actually close the DatagramChannel in the event that the Net.bind throws a BindException ?

That would be much more surprising and also have more backward
compatibility risks than the proposed fix.

I presume that on linux, if the port is not an OS  chosen ephemeral port,  i.e. it is a port from the registered port range
that the reset of the port to 0 doesn't occur in a disconnect ?

Yes. Although AFAIK it's not the port range that matters, but whether
the port was originally chosen by the system or not.

on the ln 947   localAddress = isa;

if this was  localAddress = null;  would that allow a connect to be subsequently called and the DatagramChannel usable again, even when an BindException on the disconnect has occurred, as the DatagramChannel would be rebound by the connect ?

As the API note say: it is strongly recommended to close the channel
if disconnect throws an IOException. Whether the channel is usable
or not. If you don't then you'd be depending on unspecified
behavior of the implementation.

In any case, I think it would be informative to disclose some further details on the possibility of a (re-)bind failure  in the disconnect !

The release note is there for that - it can be referred to if the
issue arises.

best regards,

-- daniel

[1] https://bugs.openjdk.java.net/browse/JDK-8231880
[2] https://bugs.openjdk.java.net/browse/JDK-8231881


best regards
Mark



------------------------------------------------------------------------
*From:* net-dev <net-dev-boun...@openjdk.java.net> on behalf of Daniel Fuchs <daniel.fu...@oracle.com>
*Sent:* Monday 7 October 2019 11:34
*To:* Alan Bateman <alan.bate...@oracle.com>; nio-dev <nio-...@openjdk.java.net>
*Cc:* OpenJDK Network Dev list <net-dev@openjdk.java.net>
*Subject:* Re: RFR: 8231260: (dc) DatagramChannel::disconnect changes the port of the local address to 0 (lnx)
Hi Alan,

Here is the new webrev - I believe I have addressed all your comments:

http://cr.openjdk.java.net/~dfuchs/webrev_8231260/webrev.01

best regards,

-- daniel

On 04/10/2019 14:55, Alan Bateman wrote:
On 04/10/2019 14:34, Daniel Fuchs wrote:
:

webrev:
http://cr.openjdk.java.net/~dfuchs/webrev_8231260/webrev.00/

The apiNote looks okay. DatagramChannelImpl::disconnect looks okay but I assume "might not preserve" should be "does not preserve" (if you make that change then the "This is the expected ..." line isn't needed).

One suggestion is to rename the test to AddressesAfterDisconnect to make it a bit clearer that it tests the local/remote addresses after disconnect. I also assume we can change this to a TestNG test to avoid the need for the assertXXX methods.

-Alan.


Reply via email to