Nodes not part of cluster have marked the Gossip as seen, see #3031

* Problem may occur when joining member with same hostname:port again,
  after downing.
* Reproduced with StressSpec exerciseJoinRemove with fixed port that
  joins and shutdown several times.
* Real solution for this will be covered by ticket #2788 by adding
  uid to member identifier, but as first step we need to support
  this scenario with current design.
* Use unique node identifier for vector clock to avoid mixup of
  old and new member instance.
* Support transition from Down to Joining in Gossip merge
* Don't gossip to unknown or unreachable members.
This commit is contained in:
Patrik Nordwall 2013-02-12 21:45:41 +01:00
parent cab78e5174
commit b349ad8d87
4 changed files with 28 additions and 8 deletions

View file

@ -58,7 +58,8 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable {
state = state.copy(members = state.members - member, unreachable = state.unreachable - member + member)
case event: MemberEvent
// replace current member with new member (might have different status, only address is used in equals)
state = state.copy(members = state.members - event.member + event.member)
state = state.copy(members = state.members - event.member + event.member,
unreachable = state.unreachable - event.member)
case LeaderChanged(leader) state = state.copy(leader = leader)
case s: CurrentClusterState state = s
case CurrentInternalStats(stats) _latestStats = stats