Hi all,
I was going over the MongoDB logless reconfiguration spec today (
https://github.com/will62794/logless-reconfig) and I saw how much more compact it was compared to my own various specs of Raft-based systems with reconfiguration. The principle reason is that this spec does not model message passing where send and receive are separate actions, communications between nodes is atomic. I have seen a few other specifications use atomic communication as well.
For my part, I have always modeled send/receive message passing as it seemed possible to miss certain edge cases when communication was atomic. However, message passing does make specifications larger, more complex with a much larger state space so there is a real cost.
I'd love to hear others opinions on whether to model send/receive message passing or use atomic comms in distributed systems.
Thanks
Jack