From 109d6042351b94d777c7c3df5e4e47b689c90015 Mon Sep 17 00:00:00 2001 From: Sandeep Date: Sun, 4 May 2014 15:05:57 +0530 Subject: [PATCH 1/2] SPARK-1710: spark-submit should print better errors than "InvocationTargetException" --- .../scala/org/apache/spark/deploy/SparkSubmit.scala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala b/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala index d131f1809c99e..e3be2bd95cf3f 100644 --- a/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala +++ b/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala @@ -18,6 +18,7 @@ package org.apache.spark.deploy import java.io.{File, PrintStream} +import java.lang.reflect.InvocationTargetException import java.net.{URI, URL} import scala.collection.mutable.{ArrayBuffer, HashMap, Map} @@ -137,7 +138,7 @@ object SparkSubmit { throw new Exception(msg) } } - + // Special flag to avoid deprecation warnings at the client sysProps("SPARK_SUBMIT") = "true" @@ -253,7 +254,12 @@ object SparkSubmit { val mainClass = Class.forName(childMainClass, true, loader) val mainMethod = mainClass.getMethod("main", new Array[String](0).getClass) - mainMethod.invoke(null, childArgs.toArray) + try { + mainMethod.invoke(null, childArgs.toArray) + } catch { + case e: InvocationTargetException => + println("Exception in Invoked Method" + e.getTargetException) + } } private def addJarToClasspath(localJar: String, loader: ExecutorURLClassLoader) { From 834d79bc7bd336e88c7288df2ea6e5ad12d7dc0c Mon Sep 17 00:00:00 2001 From: Sandeep Date: Sun, 4 May 2014 16:20:42 +0530 Subject: [PATCH 2/2] changes from srowen suggestions --- .../main/scala/org/apache/spark/deploy/SparkSubmit.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala b/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala index e3be2bd95cf3f..fb30e8a70f682 100644 --- a/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala +++ b/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala @@ -257,8 +257,10 @@ object SparkSubmit { try { mainMethod.invoke(null, childArgs.toArray) } catch { - case e: InvocationTargetException => - println("Exception in Invoked Method" + e.getTargetException) + case e: InvocationTargetException => e.getCause match { + case cause: Throwable => throw cause + case null => throw e + } } }