From f3d9f9c4e80e5f521baf4fa279b7de21ccd34b0c Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Wed, 13 Jun 2012 11:19:06 +0200 Subject: [PATCH] Merge seen table by starting with empty seen after merge, see #2077 --- .../src/main/scala/akka/cluster/Cluster.scala | 4 ++-- .../src/test/scala/akka/cluster/GossipSpec.scala | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala index 17842453bb..07712d8ed9 100644 --- a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala +++ b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala @@ -240,8 +240,8 @@ case class Gossip( val mergedMembers = Gossip.emptyMembers ++ reduceHighestPriority(this.members.toSeq, that.members.toSeq). filterNot(mergedUnreachable.contains) - // 5. merge seen (FIXME is this correct?) - val mergedSeen = this.overview.seen ++ that.overview.seen + // 5. fresh seen table + val mergedSeen = Map.empty[Address, VectorClock] Gossip(GossipOverview(mergedSeen, mergedUnreachable), mergedMembers, mergedMeta, mergedVClock) } diff --git a/akka-cluster/src/test/scala/akka/cluster/GossipSpec.scala b/akka-cluster/src/test/scala/akka/cluster/GossipSpec.scala index 985b6d5a89..8c790cf159 100644 --- a/akka-cluster/src/test/scala/akka/cluster/GossipSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/GossipSpec.scala @@ -73,5 +73,17 @@ class GossipSpec extends WordSpec with MustMatchers { } + "start with fresh seen table after merge" in { + val g1 = Gossip(members = SortedSet(a1, b1, c1, d1)).seen(a1.address).seen(b1.address) + val g2 = Gossip(members = SortedSet(a2, b2, c2, d2)).seen(b2.address).seen(c2.address) + + val merged1 = g1 merge g2 + merged1.overview.seen.isEmpty must be(true) + + val merged2 = g2 merge g1 + merged2.overview.seen.isEmpty must be(true) + + } + } }