From ab0774ba6735fd845b7d9331c2eef5359135e5f7 Mon Sep 17 00:00:00 2001 From: Adamos Loizou Date: Thu, 26 Jun 2014 13:27:44 +0200 Subject: [PATCH] SPARK-2159: Add support for stopping SparkContent on exit or exit() repl command. --- .../main/scala/org/apache/spark/repl/SparkILoopInit.scala | 7 +++++++ repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala b/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala index 910b31d209e13..51ed2f056f242 100644 --- a/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala +++ b/repl/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala @@ -122,6 +122,13 @@ trait SparkILoopInit { @transient val sc = org.apache.spark.repl.Main.interp.createSparkContext(); """) command("import org.apache.spark.SparkContext._") + command( + """def exit: Unit = { + | import Predef.{exit => scalaDefaultExit} + | org.apache.spark.repl.Main.interp.closeInterpreter() + | scalaDefaultExit + |} + """.stripMargin) } echo("Spark context available as sc.") } diff --git a/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala b/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala index f4ba8d9cc079b..5e818e65edeea 100644 --- a/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala +++ b/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala @@ -269,4 +269,9 @@ class ReplSuite extends FunSuite { assertDoesNotContain("Exception", output) assertContains("ret: Array[Foo] = Array(Foo(1),", output) } + + test("stop SparkContext on exit() command") { + val output = runInterpreter("local", "exit()") + assertContains("Stopping spark context.", output) + } }