aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatei Zaharia <matei@eecs.berkeley.edu>2011-05-31 23:47:32 -0700
committerMatei Zaharia <matei@eecs.berkeley.edu>2011-05-31 23:47:32 -0700
commit5166d76843d64ddf659660179be05ce09912e2de (patch)
treee7acdc4ccc5d84754c47b0d492dcdbbda5a5575b
parent96daa31a01a36746f55f33c43ceec3adc778bbee (diff)
downloadspark-5166d76843d64ddf659660179be05ce09912e2de.tar.gz
spark-5166d76843d64ddf659660179be05ce09912e2de.tar.bz2
spark-5166d76843d64ddf659660179be05ce09912e2de.zip
Ensure logging is initialized before spawning any threads to fix issue #45
-rw-r--r--core/src/main/scala/spark/Logging.scala4
-rw-r--r--core/src/main/scala/spark/SparkContext.scala3
2 files changed, 7 insertions, 0 deletions
diff --git a/core/src/main/scala/spark/Logging.scala b/core/src/main/scala/spark/Logging.scala
index 2d1feebbb1..c9408bbcb6 100644
--- a/core/src/main/scala/spark/Logging.scala
+++ b/core/src/main/scala/spark/Logging.scala
@@ -46,4 +46,8 @@ trait Logging {
def logError(msg: => String, throwable: Throwable) =
if (log.isErrorEnabled) log.error(msg, throwable)
+
+ // Method for ensuring that logging is initialized, to avoid having multiple
+ // threads do it concurrently (as SLF4J initialization is not thread safe).
+ def initLogging() { log }
}
diff --git a/core/src/main/scala/spark/SparkContext.scala b/core/src/main/scala/spark/SparkContext.scala
index 7aa1eb0a71..2f2ff0e801 100644
--- a/core/src/main/scala/spark/SparkContext.scala
+++ b/core/src/main/scala/spark/SparkContext.scala
@@ -15,6 +15,9 @@ class SparkContext(
val sparkHome: String = null,
val jars: Seq[String] = Nil)
extends Logging {
+ // Ensure logging is initialized before we spawn any threads
+ initLogging()
+
// Set Spark master host and port system properties
if (System.getProperty("spark.master.host") == null)
System.setProperty("spark.master.host", Utils.localHostName)