[SPARK-23743][SQL] Changed a comparison logic from containing 'slf4j' to starting with 'org.slf4j'
## What changes were proposed in this pull request? isSharedClass returns if some classes can/should be shared or not. It checks if the classes names have some keywords or start with some names. Following the logic, it can occur unintended behaviors when a custom package has `slf4j` inside the package or class name. As I guess, the first intention seems to figure out the class containing `org.slf4j`. It would be better to change the comparison logic to `name.startsWith("org.slf4j")` ## How was this patch tested? This patch should pass all of the current tests and keep all of the current behaviors. In my case, I'm using ProtobufDeserializer to get a table schema from hive tables. Thus some Protobuf packages and names have `slf4j` inside. Without this patch, it cannot be resolved because of ClassCastException from different classloaders. Author: Jongyoul Lee <jongyoul@gmail.com> Closes #20860 from jongyoul/SPARK-23743.
This commit is contained in:
parent
b348901192
commit
df05fb63ab
|
@ -179,8 +179,9 @@ private[hive] class IsolatedClientLoader(
|
|||
val isHadoopClass =
|
||||
name.startsWith("org.apache.hadoop.") && !name.startsWith("org.apache.hadoop.hive.")
|
||||
|
||||
name.contains("slf4j") ||
|
||||
name.contains("log4j") ||
|
||||
name.startsWith("org.slf4j") ||
|
||||
name.startsWith("org.apache.log4j") || // log4j1.x
|
||||
name.startsWith("org.apache.logging.log4j") || // log4j2
|
||||
name.startsWith("org.apache.spark.") ||
|
||||
(sharesHadoopClasses && isHadoopClass) ||
|
||||
name.startsWith("scala.") ||
|
||||
|
|
Loading…
Reference in a new issue