diff --git a/core/src/main/scala/org/apache/spark/util/Utils.scala b/core/src/main/scala/org/apache/spark/util/Utils.scala index cf93897f97d8..56392f0239c8 100644 --- a/core/src/main/scala/org/apache/spark/util/Utils.scala +++ b/core/src/main/scala/org/apache/spark/util/Utils.scala @@ -1988,6 +1988,11 @@ private[spark] object Utils extends Logging { */ val isMacOnAppleSilicon = SystemUtils.IS_OS_MAC_OSX && SystemUtils.OS_ARCH.equals("aarch64") + /** + * Whether the underlying JVM prefer IPv6 addresses. + */ + val preferIPv6 = "true".equals(System.getProperty("java.net.preferIPv6Addresses")) + /** * Pattern for matching a Windows drive, which contains only a single alphabet character. */ diff --git a/core/src/test/scala/org/apache/spark/deploy/SparkSubmitUtilsSuite.scala b/core/src/test/scala/org/apache/spark/deploy/SparkSubmitUtilsSuite.scala index 894588534792..c118c58cafea 100644 --- a/core/src/test/scala/org/apache/spark/deploy/SparkSubmitUtilsSuite.scala +++ b/core/src/test/scala/org/apache/spark/deploy/SparkSubmitUtilsSuite.scala @@ -32,7 +32,7 @@ import org.scalatest.BeforeAndAfterAll import org.apache.spark.SparkFunSuite import org.apache.spark.deploy.SparkSubmitUtils.MavenCoordinate -import org.apache.spark.util.Utils +import org.apache.spark.util.{DependencyUtils, Utils} class SparkSubmitUtilsSuite extends SparkFunSuite with BeforeAndAfterAll { @@ -304,4 +304,10 @@ class SparkSubmitUtilsSuite extends SparkFunSuite with BeforeAndAfterAll { s" Resolved jars are: $jarPath") } } + + test("SPARK-39501: Resolve maven dependenicy in IPv6") { + assume(Utils.preferIPv6) + DependencyUtils.resolveMavenDependencies( + URI.create("ivy://org.apache.logging.log4j:log4j-api:2.17.2")) + } } diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala index 568cb57976b9..6a33aae6b411 100644 --- a/project/SparkBuild.scala +++ b/project/SparkBuild.scala @@ -1165,6 +1165,13 @@ object TestSettings { (Test / javaOptions) += "-Dsun.io.serialization.extendedDebugInfo=false", (Test / javaOptions) += "-Dderby.system.durability=test", (Test / javaOptions) += "-Dio.netty.tryReflectionSetAccessible=true", + (Test / javaOptions) ++= { + if ("true".equals(System.getProperty("java.net.preferIPv6Addresses"))) { + Seq("-Djava.net.preferIPv6Addresses=true") + } else { + Seq.empty + } + }, (Test / javaOptions) ++= System.getProperties.asScala.filter(_._1.startsWith("spark")) .map { case (k,v) => s"-D$k=$v" }.toSeq, (Test / javaOptions) += "-ea",