I am finding it difficult to see how test 4 is valid; as far as i can tell, it will only be valid if node A ends up mongering both of the propose messages to any of the stopped nodes, in both tries.
As an example, with made-up rumor IDs to keep track of the messages
A prepares (rumor ID 1) => gets mongered with a stopped node (B | C | D) (# prepares sent by A = 1)
Paxos retry timeout occurs => A re-prepares (new rumor, rumor ID 2) => gets mongered with E (# prepares sent by A = 2)
E exchanges status information with A => A resends rumor ID 1 to E (# prepares sent by A = 3)
Therefore differing from the expected 2 prepares sent by A.
The above disregards the fact that even more retransmissions may occur due to rumor retransmission of unack'ed rumors (dependning on ones acknowledgement retransmission timeout).
The assignment states that the watcher should work as before so i assume that we are not supposed to add special conditions for only notifying of the initial injection of the prepare (which would probably solve the issue).
- Morten