ClusterRouterConfig should stop remote deployed routees, see #2797

This commit is contained in:
Patrik Nordwall 2013-04-08 15:04:36 +02:00
parent 3ee42dbe11
commit 7ff77471a1
2 changed files with 15 additions and 4 deletions

View file

@ -197,6 +197,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
@ -284,8 +292,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