diff options
-rw-r--r-- | core/src/main/scala/spark/ClosureCleaner.scala | 17 | ||||
-rw-r--r-- | core/src/main/scala/spark/Executor.scala | 10 | ||||
-rw-r--r-- | project/build/SparkProject.scala | 6 | ||||
-rw-r--r-- | repl/lib/jline.jar (renamed from core/lib/jline.jar) | bin | 87543 -> 87543 bytes | |||
-rw-r--r-- | repl/src/main/scala/spark/repl/ExecutorClassLoader.scala (renamed from core/src/main/scala/spark/repl/ExecutorClassLoader.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/Main.scala (renamed from core/src/main/scala/spark/repl/Main.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkCompletion.scala (renamed from core/src/main/scala/spark/repl/SparkCompletion.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkCompletionOutput.scala (renamed from core/src/main/scala/spark/repl/SparkCompletionOutput.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkInteractiveReader.scala (renamed from core/src/main/scala/spark/repl/SparkInteractiveReader.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkInterpreter.scala (renamed from core/src/main/scala/spark/repl/SparkInterpreter.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala (renamed from core/src/main/scala/spark/repl/SparkInterpreterLoop.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala (renamed from core/src/main/scala/spark/repl/SparkInterpreterSettings.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkJLineReader.scala (renamed from core/src/main/scala/spark/repl/SparkJLineReader.scala) | 0 | ||||
-rw-r--r-- | repl/src/main/scala/spark/repl/SparkSimpleReader.scala (renamed from core/src/main/scala/spark/repl/SparkSimpleReader.scala) | 0 | ||||
-rw-r--r-- | repl/src/test/scala/spark/repl/ReplSuite.scala (renamed from core/src/test/scala/spark/repl/ReplSuite.scala) | 0 |
15 files changed, 28 insertions, 5 deletions
diff --git a/core/src/main/scala/spark/ClosureCleaner.scala b/core/src/main/scala/spark/ClosureCleaner.scala index 0e0b3954d4..c21e49e3ae 100644 --- a/core/src/main/scala/spark/ClosureCleaner.scala +++ b/core/src/main/scala/spark/ClosureCleaner.scala @@ -64,10 +64,19 @@ object ClosureCleaner extends Logging { accessedFields(cls) = Set[String]() for (cls <- func.getClass :: innerClasses) getClassReader(cls).accept(new FieldAccessFinder(accessedFields), 0) - + + val isInterpNull = { + try { + val klass = Class.forName("spark.repl.Main") + klass.getMethod("interp").invoke(null) == null + } catch { + case _: ClassNotFoundException => true + } + } + var outer: AnyRef = null for ((cls, obj) <- (outerClasses zip outerObjects).reverse) { - outer = instantiateClass(cls, outer); + outer = instantiateClass(cls, outer, isInterpNull); for (fieldName <- accessedFields(cls)) { val field = cls.getDeclaredField(fieldName) field.setAccessible(true) @@ -85,8 +94,8 @@ object ClosureCleaner extends Logging { } } - private def instantiateClass(cls: Class[_], outer: AnyRef): AnyRef = { - if (spark.repl.Main.interp == null) { + private def instantiateClass(cls: Class[_], outer: AnyRef, isInterpNull: Boolean): AnyRef = { + if (isInterpNull) { // This is a bona fide closure class, whose constructor has no effects // other than to set its fields, so use its constructor val cons = cls.getConstructors()(0) diff --git a/core/src/main/scala/spark/Executor.scala b/core/src/main/scala/spark/Executor.scala index e534f48879..f32e66bef4 100644 --- a/core/src/main/scala/spark/Executor.scala +++ b/core/src/main/scala/spark/Executor.scala @@ -105,7 +105,15 @@ class Executor extends mesos.Executor with Logging { val classUri = System.getProperty("spark.repl.class.uri") if (classUri != null) { logInfo("Using REPL class URI: " + classUri) - loader = new repl.ExecutorClassLoader(classUri, loader) + loader = { + try { + val klass = Class.forName("spark.repl.ExecutorClassLoader").asInstanceOf[Class[_ <: ClassLoader]] + val constructor = klass.getConstructor(classUri.getClass, loader.getClass) + constructor.newInstance(classUri, loader) + } catch { + case _: ClassNotFoundException => loader + } + } } return loader diff --git a/project/build/SparkProject.scala b/project/build/SparkProject.scala index 508e2018b3..413091f16a 100644 --- a/project/build/SparkProject.scala +++ b/project/build/SparkProject.scala @@ -10,6 +10,8 @@ class SparkProject(info: ProjectInfo) extends ParentProject(info) with IdeaProje lazy val core = project("core", "Spark Core", new CoreProject(_)) + lazy val repl = project("repl", "Spark REPL", new ReplProject(_), core) + lazy val examples = project("examples", "Spark Examples", new ExamplesProject(_), core) lazy val bagel = project("bagel", "Bagel", new BagelProject(_), core) @@ -34,6 +36,10 @@ class SparkProject(info: ProjectInfo) extends ParentProject(info) with IdeaProje val jetty = jettyWebapp } + class ReplProject(info: ProjectInfo) extends DefaultProject(info) with BaseProject with DepJar with XmlTestReport { + val jetty = jettyWebapp + } + class ExamplesProject(info: ProjectInfo) extends DefaultProject(info) with BaseProject { val colt = "colt" % "colt" % "1.2.0" } diff --git a/core/lib/jline.jar b/repl/lib/jline.jar Binary files differindex 6ed67faab6..6ed67faab6 100644 --- a/core/lib/jline.jar +++ b/repl/lib/jline.jar diff --git a/core/src/main/scala/spark/repl/ExecutorClassLoader.scala b/repl/src/main/scala/spark/repl/ExecutorClassLoader.scala index 13d81ec1cf..13d81ec1cf 100644 --- a/core/src/main/scala/spark/repl/ExecutorClassLoader.scala +++ b/repl/src/main/scala/spark/repl/ExecutorClassLoader.scala diff --git a/core/src/main/scala/spark/repl/Main.scala b/repl/src/main/scala/spark/repl/Main.scala index f00df5aa58..f00df5aa58 100644 --- a/core/src/main/scala/spark/repl/Main.scala +++ b/repl/src/main/scala/spark/repl/Main.scala diff --git a/core/src/main/scala/spark/repl/SparkCompletion.scala b/repl/src/main/scala/spark/repl/SparkCompletion.scala index c6ed1860f0..c6ed1860f0 100644 --- a/core/src/main/scala/spark/repl/SparkCompletion.scala +++ b/repl/src/main/scala/spark/repl/SparkCompletion.scala diff --git a/core/src/main/scala/spark/repl/SparkCompletionOutput.scala b/repl/src/main/scala/spark/repl/SparkCompletionOutput.scala index 5ac46e3412..5ac46e3412 100644 --- a/core/src/main/scala/spark/repl/SparkCompletionOutput.scala +++ b/repl/src/main/scala/spark/repl/SparkCompletionOutput.scala diff --git a/core/src/main/scala/spark/repl/SparkInteractiveReader.scala b/repl/src/main/scala/spark/repl/SparkInteractiveReader.scala index 4f5a0a6fa0..4f5a0a6fa0 100644 --- a/core/src/main/scala/spark/repl/SparkInteractiveReader.scala +++ b/repl/src/main/scala/spark/repl/SparkInteractiveReader.scala diff --git a/core/src/main/scala/spark/repl/SparkInterpreter.scala b/repl/src/main/scala/spark/repl/SparkInterpreter.scala index 10ea346658..10ea346658 100644 --- a/core/src/main/scala/spark/repl/SparkInterpreter.scala +++ b/repl/src/main/scala/spark/repl/SparkInterpreter.scala diff --git a/core/src/main/scala/spark/repl/SparkInterpreterLoop.scala b/repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala index a118abf3ca..a118abf3ca 100644 --- a/core/src/main/scala/spark/repl/SparkInterpreterLoop.scala +++ b/repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala diff --git a/core/src/main/scala/spark/repl/SparkInterpreterSettings.scala b/repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala index ffa477785b..ffa477785b 100644 --- a/core/src/main/scala/spark/repl/SparkInterpreterSettings.scala +++ b/repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala diff --git a/core/src/main/scala/spark/repl/SparkJLineReader.scala b/repl/src/main/scala/spark/repl/SparkJLineReader.scala index 9d761c06fc..9d761c06fc 100644 --- a/core/src/main/scala/spark/repl/SparkJLineReader.scala +++ b/repl/src/main/scala/spark/repl/SparkJLineReader.scala diff --git a/core/src/main/scala/spark/repl/SparkSimpleReader.scala b/repl/src/main/scala/spark/repl/SparkSimpleReader.scala index 2b24c4bf63..2b24c4bf63 100644 --- a/core/src/main/scala/spark/repl/SparkSimpleReader.scala +++ b/repl/src/main/scala/spark/repl/SparkSimpleReader.scala diff --git a/core/src/test/scala/spark/repl/ReplSuite.scala b/repl/src/test/scala/spark/repl/ReplSuite.scala index 829b1d934e..829b1d934e 100644 --- a/core/src/test/scala/spark/repl/ReplSuite.scala +++ b/repl/src/test/scala/spark/repl/ReplSuite.scala |