From e81791cbb6879b4b2fa2a46da6ce74045293cda5 Mon Sep 17 00:00:00 2001 From: Roland Date: Tue, 17 Jan 2012 14:07:20 +0100 Subject: [PATCH] =?UTF-8?q?fix=20dormant=20bug=20in=20Mailbox=E2=80=99s=20?= =?UTF-8?q?error=20logging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - actor.actor could potentially be null after a failed restart attempt - fix one case of baroqueness in FaultHandling.scala --- akka-actor/src/main/scala/akka/actor/FaultHandling.scala | 8 ++++---- akka-actor/src/main/scala/akka/dispatch/Mailbox.scala | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/FaultHandling.scala b/akka-actor/src/main/scala/akka/actor/FaultHandling.scala index afdd683419..2b8e23c6fb 100644 --- a/akka-actor/src/main/scala/akka/actor/FaultHandling.scala +++ b/akka-actor/src/main/scala/akka/actor/FaultHandling.scala @@ -13,10 +13,10 @@ case class ChildRestartStats(val child: ActorRef, var maxNrOfRetriesCount: Int = def requestRestartPermission(retriesWindow: (Option[Int], Option[Int])): Boolean = retriesWindow match { - case (Some(retries), _) if retries < 1 ⇒ false - case (Some(retries), None) ⇒ maxNrOfRetriesCount += 1; maxNrOfRetriesCount <= retries - case (x @ (Some(_) | None), Some(window)) ⇒ retriesInWindowOkay(if (x.isDefined) x.get else 1, window) - case (None, _) ⇒ true + case (Some(retries), _) if retries < 1 ⇒ false + case (Some(retries), None) ⇒ maxNrOfRetriesCount += 1; maxNrOfRetriesCount <= retries + case (x, Some(window)) ⇒ retriesInWindowOkay(if (x.isDefined) x.get else 1, window) + case (None, _) ⇒ true } private def retriesInWindowOkay(retries: Int, window: Int): Boolean = { diff --git a/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala b/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala index 0da0bf13af..d88887d3db 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Mailbox.scala @@ -214,7 +214,7 @@ private[akka] abstract class Mailbox(val actor: ActorCell) extends MessageQueue } } catch { case e ⇒ - actor.system.eventStream.publish(Error(e, actor.self.path.toString, actor.actor.getClass, "exception during processing system messages, dropping " + SystemMessage.size(nextMessage) + " messages!")) + actor.system.eventStream.publish(Error(e, actor.self.path.toString, this.getClass, "exception during processing system messages, dropping " + SystemMessage.size(nextMessage) + " messages!")) throw e } }