Merge pull request #1276 from akka/wip-3170-deadlock-in-calling-thread-dispatcher-ban

Return of the DefaultSystemMessageQueue fixes. #3170
This commit is contained in:
Björn Antonsson 2013-04-03 01:00:18 -07:00
commit 86fdfcd22f

View file

@ -392,10 +392,15 @@ private[akka] trait DefaultSystemMessageQueue { self: Mailbox ⇒
@tailrec @tailrec
final def systemDrain(newContents: LatestFirstSystemMessageList): EarliestFirstSystemMessageList = { final def systemDrain(newContents: LatestFirstSystemMessageList): EarliestFirstSystemMessageList = {
val currentList = systemQueueGet val currentList = systemQueueGet
if (systemQueuePut(currentList, newContents)) currentList.reverse else systemDrain(newContents) if (currentList.head == NoMessage) new EarliestFirstSystemMessageList(null)
else if (systemQueuePut(currentList, newContents)) currentList.reverse
else systemDrain(newContents)
} }
def hasSystemMessages: Boolean = systemQueueGet.nonEmpty def hasSystemMessages: Boolean = systemQueueGet.head match {
case null | NoMessage false
case _ true
}
} }