Releases: a3y3/crust
Chord with failure handling
This tag represents the "second" algorithm that Chord describes.
The first algorithm doesn't hold up in the face of concurrent node joins because it is too aggressive in the way it maintains the finger table entries. The successive algorithm (tagged by this release) "fixes" that by periodically updating the successor and predecessor pointers (and finger tables) of a node.
This milestone is important because this algorithm handles failures. To check this, shut down a container on the Chord network and observe the rest of the network adjust accordingly.
Chord without failure handling
This release represents the "first" algorithm that the Chord paper describes; a very aggressive way of maintaining the finger tables, successor and predecessor pointers.
This aggression doesn't hold up in the face of concurrent node joins and more importantly, failure of nodes.
The algorithm described for that by Chord (which we will tag v1.2) is surprisingly a lot simpler, and seems to be a lot more 'naive' in the way the finger tables are updated.
Regardless, this release marks an important milestone in the development of the protocol, since it's a very usable and stable code, and it's much easier to make sense of (in that, there is no nondeterminism) as compared to the algorithm used for failure handling.