Fix ShardRegion.changeMembers, #25509 (#25510)

This commit is contained in:
Patrik Nordwall 2018-08-23 17:24:46 +02:00 committed by Christopher Batey
parent 051f5f8b5a
commit 08de65f0f1

View file

@ -480,22 +480,14 @@ private[akka] class ShardRegion(
def receiveClusterEvent(evt: ClusterDomainEvent): Unit = evt match { def receiveClusterEvent(evt: ClusterDomainEvent): Unit = evt match {
case MemberUp(m) case MemberUp(m)
if (matchingRole(m)) if (matchingRole(m))
changeMembers {
// replace, it's possible that the upNumber is changed // replace, it's possible that the upNumber is changed
membersByAge = membersByAge.filterNot(_.uniqueAddress == m.uniqueAddress) changeMembers(membersByAge.filterNot(_.uniqueAddress == m.uniqueAddress) + m)
membersByAge += m
membersByAge
}
case MemberRemoved(m, _) case MemberRemoved(m, _)
if (m.uniqueAddress == cluster.selfUniqueAddress) if (m.uniqueAddress == cluster.selfUniqueAddress)
context.stop(self) context.stop(self)
else if (matchingRole(m)) else if (matchingRole(m))
changeMembers { changeMembers(membersByAge.filterNot(_.uniqueAddress == m.uniqueAddress))
// filter, it's possible that the upNumber is changed
membersByAge = membersByAge.filterNot(_.uniqueAddress == m.uniqueAddress)
membersByAge
}
case _: MemberEvent // these are expected, no need to warn about them case _: MemberEvent // these are expected, no need to warn about them