From 54b70b101767a8c9e68ea35feefa347b31776bbc Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 13 Oct 2011 14:18:16 +0200 Subject: [PATCH] Removing pointless AtomicReference since register/unregister is already lock protected --- .../src/main/scala/akka/dispatch/PinnedDispatcher.scala | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/akka-actor/src/main/scala/akka/dispatch/PinnedDispatcher.scala b/akka-actor/src/main/scala/akka/dispatch/PinnedDispatcher.scala index cbb76baeea..9cce7fc951 100644 --- a/akka-actor/src/main/scala/akka/dispatch/PinnedDispatcher.scala +++ b/akka-actor/src/main/scala/akka/dispatch/PinnedDispatcher.scala @@ -30,19 +30,20 @@ class PinnedDispatcher(_actor: ActorCell, _name: String, _mailboxType: MailboxTy def this() = this(Dispatchers.MAILBOX_TYPE) - protected[akka] val owner = new AtomicReference[ActorCell](_actor) + @volatile + protected[akka] var owner: ActorCell = _actor //Relies on an external lock provided by MessageDispatcher.attach protected[akka] override def register(actorCell: ActorCell) = { - val actor = owner.get() + val actor = owner if ((actor ne null) && actorCell != actor) throw new IllegalArgumentException("Cannot register to anyone but " + actor) - owner.compareAndSet(null, actorCell) //Register if unregistered + owner = actorCell super.register(actorCell) } //Relies on an external lock provided by MessageDispatcher.detach protected[akka] override def unregister(actor: ActorCell) = { super.unregister(actor) - owner.compareAndSet(actor, null) //Unregister (prevent memory leak) + owner = null } }