From 5c315229f646374e6a4a45353c46b0be901c4001 Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Sat, 21 Mar 2015 22:15:55 +0000 Subject: [PATCH] Report failure status if driver throws exception e.g. OutOfMemoryError on the driver was leading to application reporting SUCCESS on history server and to YARN RM. --- .../org/apache/spark/deploy/yarn/ApplicationMaster.scala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/yarn/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala b/yarn/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala index 3d18690cd9cbf..8889435f005e1 100644 --- a/yarn/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala +++ b/yarn/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala @@ -479,7 +479,7 @@ private[spark] class ApplicationMaster( args.userArgs.copyToArray(mainArgs, 0, args.userArgs.size) mainMethod.invoke(null, mainArgs) finish(FinalApplicationStatus.SUCCEEDED, ApplicationMaster.EXIT_SUCCESS) - logDebug("Done running users class") + logDebug("Done running user's class") } catch { case e: InvocationTargetException => e.getCause match { @@ -491,6 +491,11 @@ private[spark] class ApplicationMaster( ApplicationMaster.EXIT_EXCEPTION_USER_CLASS, "User class threw exception: " + cause) } + case e: Throwable => + logError(s"Driver thread threw exception: ${e.getCause}", e.getCause) + finish(FinalApplicationStatus.FAILED, + ApplicationMaster.EXIT_UNCAUGHT_EXCEPTION, + s"Driver thread threw exception: ${e.getCause}") } } }