aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/scala/org/apache/spark/util/MutableURLClassLoader.scala31
1 files changed, 5 insertions, 26 deletions
diff --git a/core/src/main/scala/org/apache/spark/util/MutableURLClassLoader.scala b/core/src/main/scala/org/apache/spark/util/MutableURLClassLoader.scala
index 0a3180da87..034826c57e 100644
--- a/core/src/main/scala/org/apache/spark/util/MutableURLClassLoader.scala
+++ b/core/src/main/scala/org/apache/spark/util/MutableURLClassLoader.scala
@@ -19,7 +19,6 @@ package org.apache.spark.util
import java.net.{URL, URLClassLoader}
import java.util.Enumeration
-import java.util.concurrent.ConcurrentHashMap
import scala.collection.JavaConverters._
@@ -48,32 +47,12 @@ private[spark] class ChildFirstURLClassLoader(urls: Array[URL], parent: ClassLoa
private val parentClassLoader = new ParentClassLoader(parent)
- /**
- * Used to implement fine-grained class loading locks similar to what is done by Java 7. This
- * prevents deadlock issues when using non-hierarchical class loaders.
- *
- * Note that due to some issues with implementing class loaders in
- * Scala, Java 7's `ClassLoader.registerAsParallelCapable` method is not called.
- */
- private val locks = new ConcurrentHashMap[String, Object]()
-
override def loadClass(name: String, resolve: Boolean): Class[_] = {
- var lock = locks.get(name)
- if (lock == null) {
- val newLock = new Object()
- lock = locks.putIfAbsent(name, newLock)
- if (lock == null) {
- lock = newLock
- }
- }
-
- lock.synchronized {
- try {
- super.loadClass(name, resolve)
- } catch {
- case e: ClassNotFoundException =>
- parentClassLoader.loadClass(name, resolve)
- }
+ try {
+ super.loadClass(name, resolve)
+ } catch {
+ case e: ClassNotFoundException =>
+ parentClassLoader.loadClass(name, resolve)
}
}