Github user pwendell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/152#discussion_r10637523
  
    --- Diff: core/src/main/scala/org/apache/spark/MapOutputTracker.scala ---
    @@ -35,13 +35,21 @@ private[spark] case class 
GetMapOutputStatuses(shuffleId: Int)
       extends MapOutputTrackerMessage
     private[spark] case object StopMapOutputTracker extends 
MapOutputTrackerMessage
     
    -private[spark] class MapOutputTrackerMasterActor(tracker: 
MapOutputTrackerMaster)
    +private[spark] class MapOutputTrackerMasterActor(tracker: 
MapOutputTrackerMaster, conf: SparkConf)
       extends Actor with Logging {
    +  val maxAkkaFrameSize = AkkaUtils.maxFrameSizeBytes(conf)
    +
       def receive = {
         case GetMapOutputStatuses(shuffleId: Int) =>
           val hostPort = sender.path.address.hostPort
           logInfo("Asked to send map output locations for shuffle " + 
shuffleId + " to " + hostPort)
    -      sender ! tracker.getSerializedMapOutputStatuses(shuffleId)
    +      val mapOutputStatuses = 
tracker.getSerializedMapOutputStatuses(shuffleId)
    +      val serializedSize = mapOutputStatuses.size
    +      if (serializedSize > maxAkkaFrameSize) {
    +        throw new SparkException(s"Map output statuses were 
$serializedSize bytes which " +
    +          s"exceeds spark.akka.frameSize ($maxAkkaFrameSize bytes).")
    --- End diff --
    
    We could also throw an exception anyways (e.g. to allow us to test this) 
but log an error message first. At then there is something the user can see 
rather than a silent failure as there is now.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to