diff --git a/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala b/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala index 2c792338b5295..cddea43150b0a 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/TaskSetManager.scala @@ -240,7 +240,7 @@ private[spark] class TaskSetManager( // A zombie TaskSetManager may reach here while handling failed task. if (isZombie) return val pendingTaskSetToAddTo = if (speculatable) pendingSpeculatableTasks else pendingTasks - for (loc <- tasks(index).preferredLocations) { + for (loc <- tasks(index).preferredLocations.reverse) { loc match { case e: ExecutorCacheTaskLocation => pendingTaskSetToAddTo.forExecutor.getOrElseUpdate(e.executorId, new ArrayBuffer) += index