RFR: 8285515: (dc) DatagramChannel.disconnect fails with "Invalid argument" on macOS 12.4 beta2 [v2]

Jaikiran Pai jpai at openjdk.java.net
Thu Apr 28 10:33:16 UTC 2022


> 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

-------------

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/8445/files
  - new: https://git.openjdk.java.net/jdk/pull/8445/files/8cba69f0..c25d1205

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=8445&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=8445&range=00-01

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8445.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8445/head:pull/8445

PR: https://git.openjdk.java.net/jdk/pull/8445


More information about the nio-dev mailing list