cloud-fan commented on a change in pull request #26980: [SPARK-27348][CORE] HeartbeatReceiver should remove lost executors from CoarseGrainedSchedulerBackend URL: https://github.com/apache/spark/pull/26980#discussion_r361574984
########## File path: core/src/main/scala/org/apache/spark/HeartbeatReceiver.scala ########## @@ -199,14 +202,27 @@ private[spark] class HeartbeatReceiver(sc: SparkContext, clock: Clock) if (now - lastSeenMs > executorTimeoutMs) { logWarning(s"Removing executor $executorId with no recent heartbeats: " + s"${now - lastSeenMs} ms exceeds timeout $executorTimeoutMs ms") - scheduler.executorLost(executorId, SlaveLost("Executor heartbeat " + - s"timed out after ${now - lastSeenMs} ms")) - // Asynchronously kill the executor to avoid blocking the current thread + // Asynchronously kill the executor to avoid blocking the current thread killExecutorThread.submit(new Runnable { override def run(): Unit = Utils.tryLogNonFatalError { // Note: we want to get an executor back after expiring this one, // so do not simply call `sc.killExecutor` here (SPARK-8119) sc.killAndReplaceExecutor(executorId) + // SPARK-27348: in case of the executors which are not gracefully shut down, + // we should remove lost executors from CoarseGrainedSchedulerBackend manually + // here to guarantee two things: + // 1) call scheduler.executorLost() underlying to fail any tasks assigned to + // those executors to avoid app hang + // 2) always remove executor information from CoarseGrainedSchedulerBackend for + // a lost executor + sc.schedulerBackend match { + case backend: CoarseGrainedSchedulerBackend => + backend.driverEndpoint.send(RemoveExecutor(executorId, + SlaveLost(s"Executor heartbeat timed out after ${now - lastSeenMs} ms"))) + case _: LocalSchedulerBackend => + // LocalSchedulerBackend is used locally and only has one single executor + case _ => Review comment: let's throw an exception here. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org