vmware-archive / haret

A strongly consistent distributed coordination system, built using proven protocols & implemented in Rust.
461 stars 18 forks source link

Add log GC #132

Closed andrewjstone closed 7 years ago

andrewjstone commented 7 years ago

Log GC occurs during a commit when both an entry has been committed and it has been accepted by all nodes.

Additionally, add significant test enhancements for quickcheck tests.

Also, accept PrepareOk msgs after view change

PrepareOk messages get sent for uncommitted operations from backups to the new primary so that the primary can commit those operations. The primary was ignoring them because it wasn't the one to send the prepare. Now the primary accepts them and can commit operations. Note that this was neither a safety nor a liveness issue, but simply an optimization, albeit one that the VRR paper specifies.

Fix the model to reflect this change.