This is an automated email from the ASF dual-hosted git repository.
sergeychugunov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 8d1c533df89 IGNITE-28299 Fix local runs with VPN on MacOS (#12915)
8d1c533df89 is described below
commit 8d1c533df899193367b8d4c51541a48246c3d302
Author: Alexey Abashev <[email protected]>
AuthorDate: Mon Mar 30 17:13:46 2026 +0300
IGNITE-28299 Fix local runs with VPN on MacOS (#12915)
---
.../spi/discovery/tcp/TcpDiscoverySelfTest.java | 41 ++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
index 8b59eea2450..ad98a2936b9 100644
---
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
@@ -19,7 +19,9 @@ package org.apache.ignite.spi.discovery.tcp;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
+import java.net.NetworkInterface;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -96,6 +98,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.Test;
+import static java.net.NetworkInterface.getNetworkInterfaces;
+import static java.util.Collections.list;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.apache.ignite.events.EventType.EVT_JOB_MAPPED;
@@ -148,6 +152,31 @@ public class TcpDiscoverySelfTest extends
GridCommonAbstractTest {
super(false);
}
+ /**
+ * Finds a non-loopback, non-point-to-point address suitable for multicast.
+ * Point-to-point interfaces (VPN tunnels) don't support multicast
properly on macOS.
+ *
+ * @return Address string or {@code null} if none found.
+ */
+ @Nullable private static String findMulticastAddress() {
+ try {
+ for (NetworkInterface itf : list(getNetworkInterfaces())) {
+ if (!itf.isUp() || itf.isLoopback() || itf.isPointToPoint())
+ continue;
+
+ for (InetAddress addr : list(itf.getInetAddresses())) {
+ if (!addr.isLoopbackAddress() && addr.getAddress().length
== 4) // IPv4 only.
+ return addr.getHostAddress();
+ }
+ }
+ }
+ catch (Exception ignored) {
+ // No-op.
+ }
+
+ return null;
+ }
+
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String
igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
@@ -230,8 +259,16 @@ public class TcpDiscoverySelfTest extends
GridCommonAbstractTest {
// Loopback multicast discovery is not working on Mac OS
// (possibly due to
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7122846).
- if (U.isMacOs())
- spi.setLocalAddress(F.first(U.allLocalIps()));
+ if (U.isMacOs()) {
+ String mcastAddr = findMulticastAddress();
+
+ if (mcastAddr != null) {
+ spi.setLocalAddress(mcastAddr);
+ finder.setLocalAddress(mcastAddr);
+ }
+ else
+ spi.setLocalAddress(F.first(U.allLocalIps()));
+ }
}
else if
(igniteInstanceName.contains("testPingInterruptedOnNodeFailedPingingNode"))
cfg.setFailureDetectionTimeout(30_000);