srowen commented on a change in pull request #24057: [SPARK-26839][SQL] Work
around classloader changes in Java 9 for Hive isolation
URL: https://github.com/apache/spark/pull/24057#discussion_r265142878
##########
File path: sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveUtils.scala
##########
@@ -329,10 +326,17 @@ private[spark] object HiveUtils extends Logging {
val classLoader = Utils.getContextOrSparkClassLoader
val jars = allJars(classLoader)
- if (jars.length == 0) {
- throw new IllegalArgumentException(
- "Unable to locate hive jars to connect to metastore. " +
- s"Please set ${HIVE_METASTORE_JARS.key}.")
+ if (SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_9)) {
+ // Do nothing. The system classloader is no longer a URLClassLoader in
Java 9,
Review comment:
The code above tries to get the URLs of all the JARs in the classpath from
the system classloader. This isn't available in Java 9. However these only seem
to be needed in 'builtin' mode, in which case (I _believe_) we don't need to do
this at all -- don't make a new ClassLoader, just use the current ClassLoader.
@squito has an alternative, to read the classpath off of `java.class.path`.
I think that works too. It's less change, but, I was also wondering whether the
whole idea of making a new ClassLoader in this mode isn't necessary anyway.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]