diff --git a/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala b/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala index f5a704dfb2..2e3a98e8d9 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala @@ -50,7 +50,7 @@ private[akka] abstract class Mailbox(val actor: ActorCell, val messageQueue: Mes * Try to enqueue the message to this queue, or throw an exception. */ def enqueue(receiver: ActorRef, msg: Envelope): Unit = messageQueue.enqueue(receiver, msg) - + /** * Try to dequeue the next message from this queue, return null failing that. */ diff --git a/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala b/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala index c9d333b0df..f55cf19d53 100644 --- a/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala +++ b/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala @@ -131,10 +131,18 @@ private[zeromq] class ConcurrentSocketActor(params: Seq[SocketOption]) extends A } } + override def preRestart(reason: Throwable, message: Option[Any]) { + context.children foreach context.stop //Do not call postStop + } + + override def postRestart(reason: Throwable) {} //Do nothing + override def postStop { try { - poller.unregister(socket) - if (socket != null) socket.close + if (socket != null) { + poller.unregister(socket) + socket.close + } } finally { notifyListener(Closed) }