diff options
author | Marcelo Vanzin <vanzin@cloudera.com> | 2015-04-14 18:51:39 -0700 |
---|---|---|
committer | Andrew Or <andrew@databricks.com> | 2015-04-14 18:51:39 -0700 |
commit | 9717389365772d218cd7c67f9a13c3440f3c6791 (patch) | |
tree | e9e38c158b4ef1be9d580e0cb4d1e489b7f8dbbc /bin/spark-class | |
parent | 6de282e2de3cb69f9b746d03fde581429248824a (diff) | |
download | spark-9717389365772d218cd7c67f9a13c3440f3c6791.tar.gz spark-9717389365772d218cd7c67f9a13c3440f3c6791.tar.bz2 spark-9717389365772d218cd7c67f9a13c3440f3c6791.zip |
[SPARK-6890] [core] Fix launcher lib work with SPARK_PREPEND_CLASSES.
The fix for SPARK-6406 broke the case where sub-processes are launched
when SPARK_PREPEND_CLASSES is set, because the code now would only add
the launcher's build directory to the sub-process's classpath instead
of the complete assembly.
This patch fixes the problem by having the launch scripts stash the
assembly's location in an environment variable. This is not the prettiest
solution, but it avoids having to plumb that location all the way through
the Worker code that launches executors. The env variable is always
set by the launch scripts, so users cannot override it.
Author: Marcelo Vanzin <vanzin@cloudera.com>
Closes #5504 from vanzin/SPARK-6890 and squashes the following commits:
7aec921 [Marcelo Vanzin] Fix tests.
ff87a60 [Marcelo Vanzin] Merge branch 'master' into SPARK-6890
31d3ce8 [Marcelo Vanzin] [SPARK-6890] [core] Fix launcher lib work with SPARK_PREPEND_CLASSES.
Diffstat (limited to 'bin/spark-class')
-rwxr-xr-x | bin/spark-class | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/bin/spark-class b/bin/spark-class index c03946d92e..c49d97ce5c 100755 --- a/bin/spark-class +++ b/bin/spark-class @@ -82,13 +82,22 @@ if [ $(command -v "$JAR_CMD") ] ; then fi fi +LAUNCH_CLASSPATH="$SPARK_ASSEMBLY_JAR" + +# Add the launcher build dir to the classpath if requested. +if [ -n "$SPARK_PREPEND_CLASSES" ]; then + LAUNCH_CLASSPATH="$SPARK_HOME/launcher/target/scala-$SPARK_SCALA_VERSION/classes:$LAUNCH_CLASSPATH" +fi + +export _SPARK_ASSEMBLY="$SPARK_ASSEMBLY_JAR" + # The launcher library will print arguments separated by a NULL character, to allow arguments with # characters that would be otherwise interpreted by the shell. Read that in a while loop, populating # an array that will be used to exec the final command. CMD=() while IFS= read -d '' -r ARG; do CMD+=("$ARG") -done < <("$RUNNER" -cp "$SPARK_ASSEMBLY_JAR" org.apache.spark.launcher.Main "$@") +done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@") if [ "${CMD[0]}" = "usage" ]; then "${CMD[@]}" |