diff --git a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala index 5fb87bd4b62c8..3aa0e581e076d 100644 --- a/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala +++ b/yarn/common/src/main/scala/org/apache/spark/deploy/yarn/ApplicationMaster.scala @@ -126,8 +126,13 @@ private[spark] class ApplicationMaster(args: ApplicationMasterArguments, Option(diagnostics).map(msg => s" (diag message: $msg)").getOrElse("")) finished = true reporterThread.interrupt() - reporterThread.join() - client.shutdown(status, diagnostics) + try { + if (Thread.currentThread() != reporterThread) { + reporterThread.join() + } + } finally { + client.shutdown(status, diagnostics) + } } }