@@ -657,26 +657,37 @@ private[spark] class ConnectionManager(port: Int, conf: SparkConf,
657657 sentMessageStatus.markDone()
658658 }
659659 } else {
660- val ackMessage = if (onReceiveCallback != null ) {
661- logDebug(" Calling back" )
662- onReceiveCallback(bufferMessage, connectionManagerId)
663- } else {
664- logDebug(" Not calling back as callback is null" )
665- None
666- }
660+ var ackMessage : Option [Message ] = None
661+ try {
662+ ackMessage = if (onReceiveCallback != null ) {
663+ logDebug(" Calling back" )
664+ onReceiveCallback(bufferMessage, connectionManagerId)
665+ } else {
666+ logDebug(" Not calling back as callback is null" )
667+ None
668+ }
667669
668- if (ackMessage.isDefined) {
669- if (! ackMessage.get.isInstanceOf [BufferMessage ]) {
670- logDebug(" Response to " + bufferMessage + " is not a buffer message, it is of type "
671- + ackMessage.get.getClass)
672- } else if (! ackMessage.get.asInstanceOf [BufferMessage ].hasAckId) {
673- logDebug(" Response to " + bufferMessage + " does not have ack id set" )
674- ackMessage.get.asInstanceOf [BufferMessage ].ackId = bufferMessage.id
670+ if (ackMessage.isDefined) {
671+ if (! ackMessage.get.isInstanceOf [BufferMessage ]) {
672+ logDebug(" Response to " + bufferMessage + " is not a buffer message, it is of type "
673+ + ackMessage.get.getClass)
674+ } else if (! ackMessage.get.asInstanceOf [BufferMessage ].hasAckId) {
675+ logDebug(" Response to " + bufferMessage + " does not have ack id set" )
676+ ackMessage.get.asInstanceOf [BufferMessage ].ackId = bufferMessage.id
677+ }
675678 }
679+ } catch {
680+ case e : Exception => {
681+ logError(s " Exception was thrown during processing message " , e)
682+ val m = Message .createBufferMessage(bufferMessage.id)
683+ m.hasError = true
684+ ackMessage = Some (m)
685+ }
686+ } finally {
687+ sendMessage(connectionManagerId, ackMessage.getOrElse {
688+ Message .createBufferMessage(bufferMessage.id)
689+ })
676690 }
677- sendMessage(connectionManagerId, ackMessage.getOrElse {
678- Message .createBufferMessage(bufferMessage.id)
679- })
680691 }
681692 }
682693 case _ => throw new Exception (" Unknown type message received" )
0 commit comments