Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-2583

ConnectionManager cannot distinguish whether error occurred or not

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • None
    • 1.1.0
    • Spark Core
    • None

    Description

      ConnectionManager#handleMessage sent empty messages to another peer if some error occurred or not in onReceiveCalback.

               val ackMessage = if (onReceiveCallback != null) {
                  logDebug("Calling back")
                  onReceiveCallback(bufferMessage, connectionManagerId)
                } else {
                  logDebug("Not calling back as callback is null")
                  None
                }
      
                if (ackMessage.isDefined) {
                  if (!ackMessage.get.isInstanceOf[BufferMessage]) {
                    logDebug("Response to " + bufferMessage + " is not a buffer message, it is of type "
                      + ackMessage.get.getClass)
                  } else if (!ackMessage.get.asInstanceOf[BufferMessage].hasAckId) {
                    logDebug("Response to " + bufferMessage + " does not have ack id set")
                    ackMessage.get.asInstanceOf[BufferMessage].ackId = bufferMessage.id
                  }
                }
      
              // We have no way to tell peer whether error occurred or not
                sendMessage(connectionManagerId, ackMessage.getOrElse {
                  Message.createBufferMessage(bufferMessage.id)
                })
              }
      

      Attachments

        Issue Links

          Activity

            People

              joshrosen Josh Rosen
              sarutak Kousuke Saruta
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: