Skip to content

Commit 2dc9905

Browse files
committed
access executorDataMap should be protected by lock
1 parent e650f8f commit 2dc9905

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

core/src/main/scala/org/apache/spark/scheduler/cluster/CoarseGrainedSchedulerBackend.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -537,22 +537,23 @@ class CoarseGrainedSchedulerBackend(scheduler: TaskSchedulerImpl, val rpcEnv: Rp
537537
*/
538538
private def numExistingExecutors: Int = executorDataMap.size
539539

540-
override def getExecutorIds(): Seq[String] = {
540+
override def getExecutorIds(): Seq[String] = synchronized {
541541
executorDataMap.keySet.toSeq
542542
}
543543

544544
override def isExecutorActive(id: String): Boolean = synchronized {
545545
executorDataMap.contains(id) && !executorsPendingToRemove.contains(id)
546546
}
547547

548-
override def maxNumConcurrentTasks(): Int = {
548+
override def maxNumConcurrentTasks(): Int = synchronized {
549549
executorDataMap.values.map { executor =>
550550
executor.totalCores / scheduler.CPUS_PER_TASK
551551
}.sum
552552
}
553553

554554
// this function is for testing only
555-
def getExecutorAvailableResources(executorId: String): Map[String, ExecutorResourceInfo] = {
555+
def getExecutorAvailableResources(
556+
executorId: String): Map[String, ExecutorResourceInfo] = synchronized {
556557
executorDataMap.get(executorId).map(_.resourcesInfo).getOrElse(Map.empty)
557558
}
558559

0 commit comments

Comments
 (0)