From ed3ff933fa75d664eed54b2b4d5df1a1603cfb35 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 9 Nov 2011 12:49:51 +0100 Subject: [PATCH] Simplifying remote error interception and getting rid of retarded exception back-propagation --- .../src/main/scala/akka/remote/Remote.scala | 3 --- .../akka/remote/netty/NettyRemoteSupport.scala | 17 +++++------------ 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/akka-remote/src/main/scala/akka/remote/Remote.scala b/akka-remote/src/main/scala/akka/remote/Remote.scala index a0f933ce7c..fe175aeaa1 100644 --- a/akka-remote/src/main/scala/akka/remote/Remote.scala +++ b/akka-remote/src/main/scala/akka/remote/Remote.scala @@ -301,9 +301,6 @@ trait RemoteMarshallingOps { messageBuilder } - def createErrorReplyMessage(exception: Throwable, request: RemoteMessageProtocol): AkkaRemoteProtocol = - createMessageSendEnvelope(createRemoteMessageProtocolBuilder(Right(request.getSender), Left(exception), None).build) - def receiveMessage(remoteMessage: RemoteMessage, untrustedMode: Boolean) { val recipient = remoteMessage.recipient diff --git a/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala b/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala index 416c9b5dda..a724c18b42 100644 --- a/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala +++ b/akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala @@ -635,20 +635,11 @@ class RemoteServerHandler( server.notifyListeners(RemoteServerClientClosed(server, clientAddress)) } - override def messageReceived(ctx: ChannelHandlerContext, event: MessageEvent) = { + override def messageReceived(ctx: ChannelHandlerContext, event: MessageEvent) = try { event.getMessage match { case remote: AkkaRemoteProtocol if remote.hasMessage ⇒ - try { - try { - receiveMessage(new RemoteMessage(remote.getMessage, server.remoteSupport, applicationLoader), UNTRUSTED_MODE) - } catch { - case e: SecurityException ⇒ - server.notifyListeners(RemoteServerError(e, server)) - write(event.getChannel, createErrorReplyMessage(e, remote.getMessage)) //TODO FIXME What is the purpose of this response? - } - } catch { - case e: Exception ⇒ server.notifyListeners(RemoteServerError(e, server)) - } + receiveMessage(new RemoteMessage(remote.getMessage, server.remoteSupport, applicationLoader), UNTRUSTED_MODE) + case remote: AkkaRemoteProtocol if remote.hasInstruction ⇒ remote.getInstruction.getCommandType match { case CommandType.CONNECT ⇒ //TODO FIXME Create passive connection here @@ -657,6 +648,8 @@ class RemoteServerHandler( } case _ ⇒ //ignore } + } catch { + case e: Exception ⇒ server.notifyListeners(RemoteServerError(e, server)) } override def exceptionCaught(ctx: ChannelHandlerContext, event: ExceptionEvent) = {