fix ORMap duplicated delta propagation (#22606)

This commit is contained in:
gosubpl 2017-03-22 14:55:05 +01:00
parent 2d006558ab
commit 2caef783dc
2 changed files with 43 additions and 14 deletions

View file

@ -6,6 +6,7 @@ package akka.cluster.ddata
import akka.actor.Address
import akka.cluster.UniqueAddress
import akka.cluster.ddata.ORSet.AddDeltaOp
import akka.cluster.ddata.Replicator.Changed
import org.scalatest.Matchers
import org.scalatest.WordSpec
@ -141,6 +142,30 @@ class ORMapSpec extends WordSpec with Matchers {
merged2.entries("c").elements should be(Set("C"))
}
"do not have divergence in dot versions between the underlying map and ormap delta" in {
val m1 = ORMap.empty.put(node1, "a", GSet.empty + "A")
val deltaVersion = m1.delta.get match {
case ORMap.PutDeltaOp(delta, v, dt)
delta match {
case AddDeltaOp(u)
if (u.elementsMap.contains("a"))
Some(u.elementsMap("a").versionAt(node1))
else
None
case _ None
}
case _ None
}
val fullVersion =
if (m1.keys.elementsMap.contains("a"))
Some(m1.keys.elementsMap("a").versionAt(node1))
else
None
deltaVersion should ===(fullVersion)
}
"not have anomalies for remove+updated scenario and deltas" in {
val m1 = ORMap.empty.put(node1, "a", GSet.empty + "A").put(node1, "b", GSet.empty + "B")
val m2 = ORMap.empty.put(node2, "c", GSet.empty + "C")