RFR: 8285515: (dc) DatagramChannel.disconnect fails with "Invalid argument" on macOS 12.4 beta2 [v2]
Daniel Fuchs
dfuchs at openjdk.java.net
Thu Apr 28 11:18:41 UTC 2022
On Thu, 28 Apr 2022 10:33:16 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:
>> Can I please get a review of this change with proposes to address the issue reported in https://bugs.openjdk.java.net/browse/JDK-8285515?
>>
>> We have noticed that in the latest 12.4 Beta2 version of MacOSX, the implementation of `DatagramChannelImpl.disconnect` fails with an unexpected error.
>>
>> Internally, the disconnect is implemented as a call to `connect` by passing it a "null" address as suggested in the documentation of `man connect`. In previous versions of MacOSX, this call used to return a `EADDRNOTAVAIL` errno and at the same time would correctly dissolve the connected association. The `EADDRNOTAVAIL` was then caught and intentionally ignored by the code in the JNI layer in `DatagramChannelImpl.disconnect0`.
>>
>> In MacOSX 12.4 Beta 2 we are now seeing this `connect` call return `EINVAL`. This change in behaviour is noticed only for IPv4-mapped IPv6 addresses.
>>
>> The `man connect` documentation on MacOSX states that even `disconnectx` can be used to disconnect datagram sockets. The commit here does that change to use `disconnectx` for MacOSX. Tests have been successfully run on some older Mac setups to make sure this change passes there as well.
>>
>> Currently `tier1`, `tier2` and `tier3` run is in progress across various OS.
>>
>> No additional tests have been added for this change since the many existing (failing) tests already cover this use case.
>
> Jaikiran Pai has updated the pull request incrementally with one additional commit since the last revision:
>
> Use macOS instead of MacOSX in comment
That looks good to me. I'd suggest running some test repeat campaign on the CI to make sure this works as expected on all macOS versions that we support, and there's no regression on other OS.
I would also suggest tagging the tests that failed without this change with `@bug 8285515` (even though they only failed when running on the 12.4 beta2)
-------------
PR: https://git.openjdk.java.net/jdk/pull/8445
More information about the nio-dev
mailing list