Skip to content

Stress test and fix: Ensure we never emit the same Cluster.Event twice #606

@ktoso

Description

@ktoso

Bug noticed in ClusterLeaderActions after the association rewrite:

20:16:44 Test Suite 'ClusterLeaderActionsClusteredTests' started at 2020-05-01 11:16:44.913
20:16:44 Test Case 'ClusterLeaderActionsClusteredTests.test_down_to_removed_ensureRemovalHappensWhenAllHaveSeenDown' started at 2020-05-01 11:16:44.913
20:16:48 [11:16:48.9680] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: snapshot(Membership(count: 0, leader: .none, members: []))
20:16:48 [11:16:48.9690] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://first:[email protected]:9001 :: [unknown] -> [joining])
20:16:48 [11:16:48.9700] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://second:[email protected]:9002 :: [unknown] -> [joining])
20:16:48 [11:16:48.9700] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: leadershipChange(DistributedActors.Cluster.LeadershipChange(oldLeader: nil, newLeader: Optional(Member(sact://first:[email protected]:9001, status: joining, reachability: reachable))))
20:16:48 [11:16:48.9710] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://second:[email protected]:9002 :: [unknown] -> [joining])
20:16:48 [11:16:48.9710] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://third:[email protected]:9003 :: [unknown] -> [joining])
20:16:48 [11:16:48.9720] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://second:[email protected]:9002 :: [joining] -> [     up])
20:16:48 [11:16:48.9730] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://first:[email protected]:9001 :: [joining] -> [     up])
20:16:48 [11:16:48.9730] /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:247 : Captured event: membershipChange(sact://third:[email protected]:9003 :: [joining] -> [     up])
20:16:48 /code/Tests/DistributedActorsTests/Cluster/ClusterLeaderActionsClusteredTests.swift:260: error: ClusterLeaderActionsClusteredTests.test_down_to_removed_ensureRemovalHappensWhenAllHaveSeenDown : XCTAssertTrue failed - 
20:16:48             eventsOnFirstSub.shouldContain(.membershipChange(.init(node: secondNode, fromStatus: .up, toStatus: .down)))
20:16:48                             ^~~~~~~~~~~~~~
20:16:48 error: Expected Array<Event>:
20:16:48     snapshot(Membership(count: 0, leader: .none, members: []))
20:16:48     membershipChange(sact://first:[email protected]:9001 :: [unknown] -> [joining])
20:16:48     membershipChange(sact://second:[email protected]:9002 :: [unknown] -> [joining])
20:16:48     leadershipChange(DistributedActors.Cluster.LeadershipChange(oldLeader: nil, newLeader: Optional(Member(sact://first:[email protected]:9001, status: joining, reachability: reachable))))
20:16:48     membershipChange(sact://second:[email protected]:9002 :: [unknown] -> [joining])
20:16:48     membershipChange(sact://third:[email protected]:9003 :: [unknown] -> [joining])
20:16:48     membershipChange(sact://second:[email protected]:9002 :: [joining] -> [     up])
20:16:48     membershipChange(sact://first:[email protected]:9001 :: [joining] -> [     up])
20:16:48     membershipChange(sact://third:[email protected]:9003 :: [joining] -> [     up])
20:16:48 to contain: [membershipChange(sact://second:[email protected]:9002 :: [     up] -> [   down])]

Let's do a test which keeps gathering events, killing and adding nodes and checking the same event is never signalled twice.

Metadata

Metadata

Assignees

No one assigned

    Labels

    2 - pick nextIf looking for work, pick this ticket :-)kind/bugFeature doesn't work as expected.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions