aosabook/500lines — pull request #25 by djmitche (2014-01-31 20:56:57+00:00)
Title: Feature-complete Protocol

This implements a modified version of MultiPaxos, with support for changing the composition of the cluster through a linear sequence of views, with support for welcoming new cluster members and bringing them up to date. It uses a "seed" node to start a new cluster; that node waits until it has three peers, then welcomes them all to a view and exits.

There's also a big mess of debugging equipment attached, including a hacked-up JS/HTTP status monitor.

This is obviously the result of a lot of exploratory hacking to develop the protocol itself. I want to go back now and
* refactor, particularly in such a way that I can isolate debugging code in a file that won't be in the book
* optimize, especially for limited message size
* write a UDP backend
* add unit tests (exploratory hacking and TDD are kind of exclusive!)
* add support for more sophisticated fuzzing including packet loss and partitions
* wrap this up as a usable library

..but I thought it'd be good to get this out there for comments.

If you want to review the code, I highly recommend reviewing `member_replicated.py` in d37b93c directly, rather than trying to decipher the diffs in this pull req.