MessagingServicesTest cannot join mcast group on FreeBSD: Invalid argument

Stacktrace:

13:12:33.586 [DEBUG] [TestEventLogger]         Caused by:
13:12:33.587 [DEBUG] [TestEventLogger]         java.lang.RuntimeException: Could not create multicast socket for /233.253.17.122:7912
13:12:33.587 [DEBUG] [TestEventLogger]             at org.gradle.messaging.remote.internal.inet.MulticastConnection.<init>(MulticastConnection.java:61)
13:12:33.587 [DEBUG] [TestEventLogger]             at org.gradle.messaging.remote.internal.MessagingServices.createMulticastConnection(MessagingServices.java:147)
13:12:33.587 [DEBUG] [TestEventLogger]             at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
13:12:33.587 [DEBUG] [TestEventLogger]             at org.gradle.internal.service.DefaultServiceRegistry.invoke(DefaultServiceRegistry.java:426)
13:12:33.588 [DEBUG] [TestEventLogger]             at org.gradle.internal.service.DefaultServiceRegistry.access$1200(DefaultServiceRegistry.java:61)
13:12:33.588 [DEBUG] [TestEventLogger]             at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:739)
13:12:33.588 [DEBUG] [TestEventLogger]             ... 10 more
13:12:33.588 [DEBUG] [TestEventLogger]
13:12:33.588 [DEBUG] [TestEventLogger]             Caused by:
13:12:33.588 [DEBUG] [TestEventLogger]             java.net.SocketException: Invalid argument
13:12:33.588 [DEBUG] [TestEventLogger]                 at java.net.AbstractPlainDatagramSocketImpl.joinGroup(AbstractPlainDatagramSocketImpl.java:203)
13:12:33.588 [DEBUG] [TestEventLogger]                 at java.net.MulticastSocket.joinGroup(MulticastSocket.java:402)
13:12:33.589 [DEBUG] [TestEventLogger]                 at org.gradle.messaging.remote.internal.inet.MulticastConnection.<init>(MulticastConnection.java:47)
13:12:33.589 [DEBUG] [TestEventLogger]                 ... 15 more
13:12:33.593 [DEBUG] [TestEventLogger]
13:12:33.593 [DEBUG] [TestEventLogger] org.gradle.messaging.remote.internal.MessagingServicesTest FAILED

I get this also with this Jython script, so it’s not a Grade-only issue:

>>> from java.net import * 
>>> z = InetAddress.getAllByName("233.253.17.122")
>>> q = MulticastSocket(7912)                     
>>> q
java.net.MulticastSocket@3c88831
>>> z     
array(java.net.InetAddress, [/233.253.17.122])
>>> q.joinGroup(z[0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
        at java.net.PlainDatagramSocketImpl.join(Native Method)
        at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:179)
        at java.net.MulticastSocket.joinGroup(MulticastSocket.java:319)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)

java.net.SocketException: java.net.SocketException: Invalid argument
>>> q.getNetworkInterface()
name:re0 (re0)

This is FreeBSD bug #193246: Bug in IPv6 multicast join(), uncovered by Jenkins
and can be worked around by adding -Djava.net.preferIPv4Stack=true to Java VM arguments.

…but I have some trouble adding -Djava.net.preferIPv4Stack=true… tried JAVA_OPTS, GRADLE_OPTS, as well as ./gradlew -Djava.net.preferIPv4Stack=true and listing in $HOME/.gradle/gradle.properties - nothing seems to work. Also when the daemon gets started it has those options not set (I tested with -no-daemon of course).