In our automated test we see sporadic errors with this stack:
java.net.SocketException: Resource temporarily unavailable (setsockopt failed)
at java.base/sun.nio.ch.Net.joinOrDrop4(Native Method)
at java.base/sun.nio.ch.Net.join4(Net.java:654)
at java.base/sun.nio.ch.DatagramChannelImpl.innerJoin(DatagramChannelImpl.java:1568)
at java.base/sun.nio.ch.DatagramChannelImpl.join(DatagramChannelImpl.java:1586)
at java.base/sun.nio.ch.DatagramSocketAdaptor.joinGroup(DatagramSocketAdaptor.java:467)
at java.base/java.net.DatagramSocket.joinGroup(DatagramSocket.java:1199)
at java.base/java.net.MulticastSocket.joinGroup(MulticastSocket.java:331)
The native code calls setsockopt(fdval(env,fdo), IPPROTO_IP, opt, optval, optlen) and gets EAGAIN as errno - this is not defined on AIX as a valid return code but seem to happen anyway.
The idea is to simply retry as it is already done for ENOMEM on macOS.
java.net.SocketException: Resource temporarily unavailable (setsockopt failed)
at java.base/sun.nio.ch.Net.joinOrDrop4(Native Method)
at java.base/sun.nio.ch.Net.join4(Net.java:654)
at java.base/sun.nio.ch.DatagramChannelImpl.innerJoin(DatagramChannelImpl.java:1568)
at java.base/sun.nio.ch.DatagramChannelImpl.join(DatagramChannelImpl.java:1586)
at java.base/sun.nio.ch.DatagramSocketAdaptor.joinGroup(DatagramSocketAdaptor.java:467)
at java.base/java.net.DatagramSocket.joinGroup(DatagramSocket.java:1199)
at java.base/java.net.MulticastSocket.joinGroup(MulticastSocket.java:331)
The native code calls setsockopt(fdval(env,fdo), IPPROTO_IP, opt, optval, optlen) and gets EAGAIN as errno - this is not defined on AIX as a valid return code but seem to happen anyway.
The idea is to simply retry as it is already done for ENOMEM on macOS.