diff --git a/core/src/main/scala/org/apache/spark/executor/Executor.scala b/core/src/main/scala/org/apache/spark/executor/Executor.scala index acb83f33b2..289c24ca36 100644 --- a/core/src/main/scala/org/apache/spark/executor/Executor.scala +++ b/core/src/main/scala/org/apache/spark/executor/Executor.scala @@ -72,7 +72,7 @@ private[spark] class Executor( logInfo(s"Starting executor ID $executorId on host $executorHostname") private val executorShutdown = new AtomicBoolean(false) - ShutdownHookManager.addShutdownHook( + val stopHookReference = ShutdownHookManager.addShutdownHook( () => stop() ) // Application dependencies (added through SparkContext) that we've fetched so far on this node. @@ -312,6 +312,7 @@ private[spark] class Executor( def stop(): Unit = { if (!executorShutdown.getAndSet(true)) { + ShutdownHookManager.removeShutdownHook(stopHookReference) env.metricsSystem.report() try { metricsPoller.stop()