Kousuke Saruta created SPARK-2583:
-------------------------------------

             Summary: ConnectionManager cannot distinguish whether error 
occurred or not
                 Key: SPARK-2583
                 URL: https://issues.apache.org/jira/browse/SPARK-2583
             Project: Spark
          Issue Type: Bug
            Reporter: Kousuke Saruta


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

{code}
         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)
          })
        }
{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to