aboutsummaryrefslogtreecommitdiff
path: root/yarn
diff options
context:
space:
mode:
authorjerryshao <sshao@hortonworks.com>2016-03-15 10:20:38 -0700
committerMarcelo Vanzin <vanzin@cloudera.com>2016-03-15 10:20:38 -0700
commitd89c71417c384e1a2820bd80b67c26e11405aebc (patch)
tree61fe08944fa62fec7db39acc252bc1601109137f /yarn
parent5e6f2f45639f727cba43967858eb95b865ed81fa (diff)
downloadspark-d89c71417c384e1a2820bd80b67c26e11405aebc.tar.gz
spark-d89c71417c384e1a2820bd80b67c26e11405aebc.tar.bz2
spark-d89c71417c384e1a2820bd80b67c26e11405aebc.zip
[SPARK-13642][YARN] Changed the default application exit state to failed for yarn cluster mode
## What changes were proposed in this pull request? Changing the default exit state to `failed` for any application running on yarn cluster mode. ## How was this patch tested? Unit test is done locally. CC tgravescs and vanzin . Author: jerryshao <sshao@hortonworks.com> Closes #11693 from jerryshao/SPARK-13642.
Diffstat (limited to 'yarn')
-rw-r--r--yarn/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala15
1 files changed, 8 insertions, 7 deletions
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 7d7bf88b9e..cd179cf328 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
@@ -152,13 +152,13 @@ private[spark] class ApplicationMaster(
val isLastAttempt = client.getAttemptId().getAttemptId() >= maxAppAttempts
if (!finished) {
- // This happens when the user application calls System.exit(). We have the choice
- // of either failing or succeeding at this point. We report success to avoid
- // retrying applications that have succeeded (System.exit(0)), which means that
- // applications that explicitly exit with a non-zero status will also show up as
- // succeeded in the RM UI.
+ // The default state of ApplicationMaster is failed if it is invoked by shut down hook.
+ // This behavior is different compared to 1.x version.
+ // If user application is exited ahead of time by calling System.exit(N), here mark
+ // this application as failed with EXIT_EARLY. For a good shutdown, user shouldn't call
+ // System.exit(0) to terminate the application.
finish(finalStatus,
- ApplicationMaster.EXIT_SUCCESS,
+ ApplicationMaster.EXIT_EARLY,
"Shutdown hook called before final status was reported.")
}
@@ -209,7 +209,7 @@ private[spark] class ApplicationMaster(
*/
final def getDefaultFinalStatus(): FinalApplicationStatus = {
if (isClusterMode) {
- FinalApplicationStatus.SUCCEEDED
+ FinalApplicationStatus.FAILED
} else {
FinalApplicationStatus.UNDEFINED
}
@@ -653,6 +653,7 @@ object ApplicationMaster extends Logging {
private val EXIT_SC_NOT_INITED = 13
private val EXIT_SECURITY = 14
private val EXIT_EXCEPTION_USER_CLASS = 15
+ private val EXIT_EARLY = 16
private var master: ApplicationMaster = _