Akka 为什么Spark worker演员使用masterLock?

Akka 为什么Spark worker演员使用masterLock?,akka,apache-spark,Akka,Apache Spark,据我所知,演员一次只处理一条信息。我不明白为什么Apache Spark会在masterLock上同步 case SendHeartbeat => masterLock.synchronized { if (connected) { master ! Heartbeat(workerId) } } 我希望它看起来像这样: case SendHeartbeat => if (connected) { master ! Heartbeat(workerId)

据我所知,演员一次只处理一条信息。我不明白为什么Apache Spark会在masterLock上同步

case SendHeartbeat =>
  masterLock.synchronized {
    if (connected) { master ! Heartbeat(workerId) }
  }
我希望它看起来像这样:

case SendHeartbeat =>
    if (connected) { master ! Heartbeat(workerId)

在电话里回答。简而言之,锁不再是必要的;这只不过是大师可以从与演员不同的线程中更改的一个遗留问题,一个后来被修改的糟糕设计。

如果你发布一个到源代码的链接,每个人都可以更轻松地查找更多上下文…@pushy我明白你的意思,我还没有深入研究Spark代码,也许有一个微妙的地方我看不出来,但从我所能看到的,我同意你,这似乎没有必要…同意你。也许你最好给我发封电子邮件dev@spark.apache.org