Gossip Glomers: behaviour of --nemesis partition

I have two questions regarding Maelstrom’s --nemesis partition.

  1. Does the partition always cut according to the topology? For example, let’s say our topology is:
| |

If partitions ignored the topology, it could happen that our graph is divided into components {A,D} and {B, C}. Then, even though A and D are in the same components, they wouldn’t communicate, because they aren’t neighbors in the topology.

  1. What happens to requests sent between isolated nodes? Do they disappear? Are they put in a queue to be sent as soon as the network is healed? Or do they return an error?

My understanding of the --nemesis partition flag is that will inject partitions between any node pairs and it doesn’t rely on topology. All nodes are accessible from every other node. The topology is just a suggested layout for communication.

The partition can either delay messages or drop them. There aren’t many guarantees to how the messages will be handled so you shouldn’t rely on any behavior in particular.