Merge pull request #1313 from akka/wip-2797-cluster-router-stop-routees-patriknw

ClusterRouterConfig should stop remote deployed routees, see #2797
This commit is contained in:
Patrik Nordwall 2013-04-08 12:38:26 -07:00
commit 9270bfa70b
2 changed files with 15 additions and 4 deletions

View file

@ -199,6 +199,14 @@ private[akka] class ClusterRouteeProvider(
private[routing] def createRoutees(): Unit = createRoutees(settings.totalInstances)
override def unregisterRoutees(routees: immutable.Iterable[ActorRef]): Unit = {
super.unregisterRoutees(routees)
if (!settings.isRouteesPathDefined) {
// stop remote deployed routees
routees foreach context.stop
}
}
private def selectDeploymentTarget: Option[Address] = {
val currentRoutees = routees
val currentNodes = availableNodes
@ -286,8 +294,8 @@ private[akka] class ClusterRouterActor extends Router {
routeeProvider.nodes -= address
// unregister routees that live on that node
val affectedRoutes = routeeProvider.routees.filter(fullAddress(_) == address)
routeeProvider.unregisterRoutees(affectedRoutes)
val affectedRoutees = routeeProvider.routees.filter(fullAddress(_) == address)
routeeProvider.unregisterRoutees(affectedRoutees)
// createRoutees will not create more than createRoutees and maxInstancesPerNode
// this is useful when totalInstances < upNodes.size