From e2856c0460a5022096e6c792d15301fac4d7abed Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Tue, 30 Aug 2011 16:30:41 +0200 Subject: [PATCH 1/2] Removing wasteful locking in BalancingDispatcher --- .../src/main/scala/akka/dispatch/BalancingDispatcher.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala b/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala index 04afac83e6..e7b2f98c9b 100644 --- a/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala +++ b/akka-actor/src/main/scala/akka/dispatch/BalancingDispatcher.scala @@ -66,12 +66,12 @@ class BalancingDispatcher( actorRef, aType)) } - synchronized { members :+= actorRef } //Update members + members :+= actorRef //Update members, doesn't need synchronized, is guarded in attach super.register(actorRef) } protected[akka] override def unregister(actorRef: LocalActorRef) = { - synchronized { members = members.filterNot(actorRef eq) } //Update members + members = members.filterNot(actorRef eq) //Update members, doesn't need synchronized, is guarded in detach super.unregister(actorRef) } From 7bc5b2c39cfaa09d7e66b4d9cd8cb2e362e1fdd9 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Tue, 30 Aug 2011 16:31:07 +0200 Subject: [PATCH 2/2] Fixing race-condition in ActorRegistry.actorFor(address) --- akka-actor/src/main/scala/akka/actor/ActorRegistry.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/ActorRegistry.scala b/akka-actor/src/main/scala/akka/actor/ActorRegistry.scala index 9fb24a970e..702fb93a08 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRegistry.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRegistry.scala @@ -35,10 +35,7 @@ private[actor] final class ActorRegistry private[actor] () extends ListenerManag /** * Finds the actor that has a specific address. */ - def actorFor(address: String): Option[ActorRef] = { - if (actorsByAddress.containsKey(address)) Some(actorsByAddress.get(address)) - else None - } + def actorFor(address: String): Option[ActorRef] = Option(actorsByAddress.get(address)) /** * Finds the typed actors that have a specific address.