From bc06a266b876889f9f33a76f97952843ef49cb42 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Mon, 8 Apr 2013 17:16:40 +0200 Subject: [PATCH] Supress stack trace for exc thrown when remoting is stopped --- .../src/main/scala/akka/remote/RemoteTransport.scala | 8 ++++++++ akka-remote/src/main/scala/akka/remote/Remoting.scala | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala b/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala index 6725383c49..7d891b2299 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala @@ -9,6 +9,7 @@ import akka.actor._ import akka.event.LoggingAdapter import scala.collection.immutable import scala.concurrent.Future +import scala.util.control.NoStackTrace /** * RemoteTransportException represents a general failure within a RemoteTransport, @@ -17,6 +18,13 @@ import scala.concurrent.Future @SerialVersionUID(1L) class RemoteTransportException(message: String, cause: Throwable) extends AkkaException(message, cause) +/** + * [[RemoteTransportException]] without stack trace. + */ +@SerialVersionUID(1L) +class RemoteTransportExceptionNoStackTrace(message: String, cause: Throwable) + extends RemoteTransportException(message, cause) with NoStackTrace + /** * INTERNAL API * diff --git a/akka-remote/src/main/scala/akka/remote/Remoting.scala b/akka-remote/src/main/scala/akka/remote/Remoting.scala index a1fa8b4174..df1f93ca7b 100644 --- a/akka-remote/src/main/scala/akka/remote/Remoting.scala +++ b/akka-remote/src/main/scala/akka/remote/Remoting.scala @@ -194,7 +194,7 @@ private[remote] class Remoting(_system: ExtendedActorSystem, _provider: RemoteAc override def send(message: Any, senderOption: Option[ActorRef], recipient: RemoteActorRef): Unit = endpointManager match { case Some(manager) ⇒ manager.tell(Send(message, senderOption, recipient), sender = senderOption getOrElse Actor.noSender) - case None ⇒ throw new IllegalStateException("Attempted to send remote message but Remoting is not running.") + case None ⇒ throw new RemoteTransportExceptionNoStackTrace("Attempted to send remote message but Remoting is not running.", null) } override def managementCommand(cmd: Any): Future[Boolean] = endpointManager match { @@ -202,7 +202,7 @@ private[remote] class Remoting(_system: ExtendedActorSystem, _provider: RemoteAc import system.dispatcher implicit val timeout = CommandAckTimeout manager ? ManagementCommand(cmd) map { case ManagementCommandAck(status) ⇒ status } - case None ⇒ throw new IllegalStateException("Attempted to send management command but Remoting is not running.") + case None ⇒ throw new RemoteTransportExceptionNoStackTrace("Attempted to send management command but Remoting is not running.", null) } // Not used anywhere only to keep compatibility with RemoteTransport interface